• 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.compute.v1.stub;
18 
19 import static com.google.cloud.compute.v1.HealthChecksClient.AggregatedListPagedResponse;
20 import static com.google.cloud.compute.v1.HealthChecksClient.ListPagedResponse;
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.httpjson.GaxHttpJsonProperties;
29 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
30 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
31 import com.google.api.gax.httpjson.ProtoOperationTransformers;
32 import com.google.api.gax.longrunning.OperationSnapshot;
33 import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
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.OperationCallSettings;
39 import com.google.api.gax.rpc.PageContext;
40 import com.google.api.gax.rpc.PagedCallSettings;
41 import com.google.api.gax.rpc.PagedListDescriptor;
42 import com.google.api.gax.rpc.PagedListResponseFactory;
43 import com.google.api.gax.rpc.StatusCode;
44 import com.google.api.gax.rpc.StubSettings;
45 import com.google.api.gax.rpc.TransportChannelProvider;
46 import com.google.api.gax.rpc.UnaryCallSettings;
47 import com.google.api.gax.rpc.UnaryCallable;
48 import com.google.cloud.compute.v1.AggregatedListHealthChecksRequest;
49 import com.google.cloud.compute.v1.DeleteHealthCheckRequest;
50 import com.google.cloud.compute.v1.GetHealthCheckRequest;
51 import com.google.cloud.compute.v1.HealthCheck;
52 import com.google.cloud.compute.v1.HealthCheckList;
53 import com.google.cloud.compute.v1.HealthChecksAggregatedList;
54 import com.google.cloud.compute.v1.HealthChecksScopedList;
55 import com.google.cloud.compute.v1.InsertHealthCheckRequest;
56 import com.google.cloud.compute.v1.ListHealthChecksRequest;
57 import com.google.cloud.compute.v1.Operation;
58 import com.google.cloud.compute.v1.PatchHealthCheckRequest;
59 import com.google.cloud.compute.v1.UpdateHealthCheckRequest;
60 import com.google.common.collect.ImmutableList;
61 import com.google.common.collect.ImmutableMap;
62 import com.google.common.collect.ImmutableSet;
63 import com.google.common.collect.Lists;
64 import java.io.IOException;
65 import java.util.Collections;
66 import java.util.List;
67 import java.util.Map;
68 import javax.annotation.Generated;
69 import org.threeten.bp.Duration;
70 
71 // AUTO-GENERATED DOCUMENTATION AND CLASS.
72 /**
73  * Settings class to configure an instance of {@link HealthChecksStub}.
74  *
75  * <p>The default instance has everything set to sensible defaults:
76  *
77  * <ul>
78  *   <li>The default service address (compute.googleapis.com) and default port (443) are used.
79  *   <li>Credentials are acquired automatically through Application Default Credentials.
80  *   <li>Retries are configured for idempotent methods but not for non-idempotent methods.
81  * </ul>
82  *
83  * <p>The builder of this class is recursive, so contained classes are themselves builders. When
84  * build() is called, the tree of builders is called to create the complete settings object.
85  *
86  * <p>For example, to set the total timeout of get to 30 seconds:
87  *
88  * <pre>{@code
89  * // This snippet has been automatically generated and should be regarded as a code template only.
90  * // It will require modifications to work:
91  * // - It may require correct/in-range values for request initialization.
92  * // - It may require specifying regional endpoints when creating the service client as shown in
93  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
94  * HealthChecksStubSettings.Builder healthChecksSettingsBuilder =
95  *     HealthChecksStubSettings.newBuilder();
96  * healthChecksSettingsBuilder
97  *     .getSettings()
98  *     .setRetrySettings(
99  *         healthChecksSettingsBuilder
100  *             .getSettings()
101  *             .getRetrySettings()
102  *             .toBuilder()
103  *             .setTotalTimeout(Duration.ofSeconds(30))
104  *             .build());
105  * HealthChecksStubSettings healthChecksSettings = healthChecksSettingsBuilder.build();
106  * }</pre>
107  */
108 @Generated("by gapic-generator-java")
109 public class HealthChecksStubSettings extends StubSettings<HealthChecksStubSettings> {
110   /** The default scopes of the service. */
111   private static final ImmutableList<String> DEFAULT_SERVICE_SCOPES =
112       ImmutableList.<String>builder()
113           .add("https://www.googleapis.com/auth/compute")
114           .add("https://www.googleapis.com/auth/cloud-platform")
115           .build();
116 
117   private final PagedCallSettings<
118           AggregatedListHealthChecksRequest,
119           HealthChecksAggregatedList,
120           AggregatedListPagedResponse>
121       aggregatedListSettings;
122   private final UnaryCallSettings<DeleteHealthCheckRequest, Operation> deleteSettings;
123   private final OperationCallSettings<DeleteHealthCheckRequest, Operation, Operation>
124       deleteOperationSettings;
125   private final UnaryCallSettings<GetHealthCheckRequest, HealthCheck> getSettings;
126   private final UnaryCallSettings<InsertHealthCheckRequest, Operation> insertSettings;
127   private final OperationCallSettings<InsertHealthCheckRequest, Operation, Operation>
128       insertOperationSettings;
129   private final PagedCallSettings<ListHealthChecksRequest, HealthCheckList, ListPagedResponse>
130       listSettings;
131   private final UnaryCallSettings<PatchHealthCheckRequest, Operation> patchSettings;
132   private final OperationCallSettings<PatchHealthCheckRequest, Operation, Operation>
133       patchOperationSettings;
134   private final UnaryCallSettings<UpdateHealthCheckRequest, Operation> updateSettings;
135   private final OperationCallSettings<UpdateHealthCheckRequest, Operation, Operation>
136       updateOperationSettings;
137 
138   private static final PagedListDescriptor<
139           AggregatedListHealthChecksRequest,
140           HealthChecksAggregatedList,
141           Map.Entry<String, HealthChecksScopedList>>
142       AGGREGATED_LIST_PAGE_STR_DESC =
143           new PagedListDescriptor<
144               AggregatedListHealthChecksRequest,
145               HealthChecksAggregatedList,
146               Map.Entry<String, HealthChecksScopedList>>() {
147             @Override
148             public String emptyToken() {
149               return "";
150             }
151 
152             @Override
153             public AggregatedListHealthChecksRequest injectToken(
154                 AggregatedListHealthChecksRequest payload, String token) {
155               return AggregatedListHealthChecksRequest.newBuilder(payload)
156                   .setPageToken(token)
157                   .build();
158             }
159 
160             @Override
161             public AggregatedListHealthChecksRequest injectPageSize(
162                 AggregatedListHealthChecksRequest payload, int pageSize) {
163               return AggregatedListHealthChecksRequest.newBuilder(payload)
164                   .setMaxResults(pageSize)
165                   .build();
166             }
167 
168             @Override
169             public Integer extractPageSize(AggregatedListHealthChecksRequest payload) {
170               return payload.getMaxResults();
171             }
172 
173             @Override
174             public String extractNextToken(HealthChecksAggregatedList payload) {
175               return payload.getNextPageToken();
176             }
177 
178             @Override
179             public Iterable<Map.Entry<String, HealthChecksScopedList>> extractResources(
180                 HealthChecksAggregatedList payload) {
181               return payload.getItemsMap() == null
182                   ? Collections.<Map.Entry<String, HealthChecksScopedList>>emptySet()
183                   : payload.getItemsMap().entrySet();
184             }
185           };
186 
187   private static final PagedListDescriptor<ListHealthChecksRequest, HealthCheckList, HealthCheck>
188       LIST_PAGE_STR_DESC =
189           new PagedListDescriptor<ListHealthChecksRequest, HealthCheckList, HealthCheck>() {
190             @Override
191             public String emptyToken() {
192               return "";
193             }
194 
195             @Override
196             public ListHealthChecksRequest injectToken(
197                 ListHealthChecksRequest payload, String token) {
198               return ListHealthChecksRequest.newBuilder(payload).setPageToken(token).build();
199             }
200 
201             @Override
202             public ListHealthChecksRequest injectPageSize(
203                 ListHealthChecksRequest payload, int pageSize) {
204               return ListHealthChecksRequest.newBuilder(payload).setMaxResults(pageSize).build();
205             }
206 
207             @Override
208             public Integer extractPageSize(ListHealthChecksRequest payload) {
209               return payload.getMaxResults();
210             }
211 
212             @Override
213             public String extractNextToken(HealthCheckList payload) {
214               return payload.getNextPageToken();
215             }
216 
217             @Override
218             public Iterable<HealthCheck> extractResources(HealthCheckList payload) {
219               return payload.getItemsList() == null
220                   ? ImmutableList.<HealthCheck>of()
221                   : payload.getItemsList();
222             }
223           };
224 
225   private static final PagedListResponseFactory<
226           AggregatedListHealthChecksRequest,
227           HealthChecksAggregatedList,
228           AggregatedListPagedResponse>
229       AGGREGATED_LIST_PAGE_STR_FACT =
230           new PagedListResponseFactory<
231               AggregatedListHealthChecksRequest,
232               HealthChecksAggregatedList,
233               AggregatedListPagedResponse>() {
234             @Override
235             public ApiFuture<AggregatedListPagedResponse> getFuturePagedResponse(
236                 UnaryCallable<AggregatedListHealthChecksRequest, HealthChecksAggregatedList>
237                     callable,
238                 AggregatedListHealthChecksRequest request,
239                 ApiCallContext context,
240                 ApiFuture<HealthChecksAggregatedList> futureResponse) {
241               PageContext<
242                       AggregatedListHealthChecksRequest,
243                       HealthChecksAggregatedList,
244                       Map.Entry<String, HealthChecksScopedList>>
245                   pageContext =
246                       PageContext.create(callable, AGGREGATED_LIST_PAGE_STR_DESC, request, context);
247               return AggregatedListPagedResponse.createAsync(pageContext, futureResponse);
248             }
249           };
250 
251   private static final PagedListResponseFactory<
252           ListHealthChecksRequest, HealthCheckList, ListPagedResponse>
253       LIST_PAGE_STR_FACT =
254           new PagedListResponseFactory<
255               ListHealthChecksRequest, HealthCheckList, ListPagedResponse>() {
256             @Override
257             public ApiFuture<ListPagedResponse> getFuturePagedResponse(
258                 UnaryCallable<ListHealthChecksRequest, HealthCheckList> callable,
259                 ListHealthChecksRequest request,
260                 ApiCallContext context,
261                 ApiFuture<HealthCheckList> futureResponse) {
262               PageContext<ListHealthChecksRequest, HealthCheckList, HealthCheck> pageContext =
263                   PageContext.create(callable, LIST_PAGE_STR_DESC, request, context);
264               return ListPagedResponse.createAsync(pageContext, futureResponse);
265             }
266           };
267 
268   /** Returns the object with the settings used for calls to aggregatedList. */
269   public PagedCallSettings<
270           AggregatedListHealthChecksRequest,
271           HealthChecksAggregatedList,
272           AggregatedListPagedResponse>
aggregatedListSettings()273       aggregatedListSettings() {
274     return aggregatedListSettings;
275   }
276 
277   /** Returns the object with the settings used for calls to delete. */
deleteSettings()278   public UnaryCallSettings<DeleteHealthCheckRequest, Operation> deleteSettings() {
279     return deleteSettings;
280   }
281 
282   /** Returns the object with the settings used for calls to delete. */
283   public OperationCallSettings<DeleteHealthCheckRequest, Operation, Operation>
deleteOperationSettings()284       deleteOperationSettings() {
285     return deleteOperationSettings;
286   }
287 
288   /** Returns the object with the settings used for calls to get. */
getSettings()289   public UnaryCallSettings<GetHealthCheckRequest, HealthCheck> getSettings() {
290     return getSettings;
291   }
292 
293   /** Returns the object with the settings used for calls to insert. */
insertSettings()294   public UnaryCallSettings<InsertHealthCheckRequest, Operation> insertSettings() {
295     return insertSettings;
296   }
297 
298   /** Returns the object with the settings used for calls to insert. */
299   public OperationCallSettings<InsertHealthCheckRequest, Operation, Operation>
insertOperationSettings()300       insertOperationSettings() {
301     return insertOperationSettings;
302   }
303 
304   /** Returns the object with the settings used for calls to list. */
305   public PagedCallSettings<ListHealthChecksRequest, HealthCheckList, ListPagedResponse>
listSettings()306       listSettings() {
307     return listSettings;
308   }
309 
310   /** Returns the object with the settings used for calls to patch. */
patchSettings()311   public UnaryCallSettings<PatchHealthCheckRequest, Operation> patchSettings() {
312     return patchSettings;
313   }
314 
315   /** Returns the object with the settings used for calls to patch. */
316   public OperationCallSettings<PatchHealthCheckRequest, Operation, Operation>
patchOperationSettings()317       patchOperationSettings() {
318     return patchOperationSettings;
319   }
320 
321   /** Returns the object with the settings used for calls to update. */
updateSettings()322   public UnaryCallSettings<UpdateHealthCheckRequest, Operation> updateSettings() {
323     return updateSettings;
324   }
325 
326   /** Returns the object with the settings used for calls to update. */
327   public OperationCallSettings<UpdateHealthCheckRequest, Operation, Operation>
updateOperationSettings()328       updateOperationSettings() {
329     return updateOperationSettings;
330   }
331 
createStub()332   public HealthChecksStub createStub() throws IOException {
333     if (getTransportChannelProvider()
334         .getTransportName()
335         .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) {
336       return HttpJsonHealthChecksStub.create(this);
337     }
338     throw new UnsupportedOperationException(
339         String.format(
340             "Transport not supported: %s", getTransportChannelProvider().getTransportName()));
341   }
342 
343   /** Returns a builder for the default ExecutorProvider for this service. */
defaultExecutorProviderBuilder()344   public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() {
345     return InstantiatingExecutorProvider.newBuilder();
346   }
347 
348   /** Returns the default service endpoint. */
getDefaultEndpoint()349   public static String getDefaultEndpoint() {
350     return "compute.googleapis.com:443";
351   }
352 
353   /** Returns the default mTLS service endpoint. */
getDefaultMtlsEndpoint()354   public static String getDefaultMtlsEndpoint() {
355     return "compute.mtls.googleapis.com:443";
356   }
357 
358   /** Returns the default service scopes. */
getDefaultServiceScopes()359   public static List<String> getDefaultServiceScopes() {
360     return DEFAULT_SERVICE_SCOPES;
361   }
362 
363   /** Returns a builder for the default credentials for this service. */
defaultCredentialsProviderBuilder()364   public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
365     return GoogleCredentialsProvider.newBuilder()
366         .setScopesToApply(DEFAULT_SERVICE_SCOPES)
367         .setUseJwtAccessWithScope(true);
368   }
369 
370   /** Returns a builder for the default ChannelProvider for this service. */
371   public static InstantiatingHttpJsonChannelProvider.Builder
defaultHttpJsonTransportProviderBuilder()372       defaultHttpJsonTransportProviderBuilder() {
373     return InstantiatingHttpJsonChannelProvider.newBuilder();
374   }
375 
defaultTransportChannelProvider()376   public static TransportChannelProvider defaultTransportChannelProvider() {
377     return defaultHttpJsonTransportProviderBuilder().build();
378   }
379 
380   @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
defaultApiClientHeaderProviderBuilder()381   public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
382     return ApiClientHeaderProvider.newBuilder()
383         .setGeneratedLibToken(
384             "gapic", GaxProperties.getLibraryVersion(HealthChecksStubSettings.class))
385         .setTransportToken(
386             GaxHttpJsonProperties.getHttpJsonTokenName(),
387             GaxHttpJsonProperties.getHttpJsonVersion());
388   }
389 
390   /** Returns a new builder for this class. */
newBuilder()391   public static Builder newBuilder() {
392     return Builder.createDefault();
393   }
394 
395   /** Returns a new builder for this class. */
newBuilder(ClientContext clientContext)396   public static Builder newBuilder(ClientContext clientContext) {
397     return new Builder(clientContext);
398   }
399 
400   /** Returns a builder containing all the values of this settings class. */
toBuilder()401   public Builder toBuilder() {
402     return new Builder(this);
403   }
404 
HealthChecksStubSettings(Builder settingsBuilder)405   protected HealthChecksStubSettings(Builder settingsBuilder) throws IOException {
406     super(settingsBuilder);
407 
408     aggregatedListSettings = settingsBuilder.aggregatedListSettings().build();
409     deleteSettings = settingsBuilder.deleteSettings().build();
410     deleteOperationSettings = settingsBuilder.deleteOperationSettings().build();
411     getSettings = settingsBuilder.getSettings().build();
412     insertSettings = settingsBuilder.insertSettings().build();
413     insertOperationSettings = settingsBuilder.insertOperationSettings().build();
414     listSettings = settingsBuilder.listSettings().build();
415     patchSettings = settingsBuilder.patchSettings().build();
416     patchOperationSettings = settingsBuilder.patchOperationSettings().build();
417     updateSettings = settingsBuilder.updateSettings().build();
418     updateOperationSettings = settingsBuilder.updateOperationSettings().build();
419   }
420 
421   /** Builder for HealthChecksStubSettings. */
422   public static class Builder extends StubSettings.Builder<HealthChecksStubSettings, Builder> {
423     private final ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders;
424     private final PagedCallSettings.Builder<
425             AggregatedListHealthChecksRequest,
426             HealthChecksAggregatedList,
427             AggregatedListPagedResponse>
428         aggregatedListSettings;
429     private final UnaryCallSettings.Builder<DeleteHealthCheckRequest, Operation> deleteSettings;
430     private final OperationCallSettings.Builder<DeleteHealthCheckRequest, Operation, Operation>
431         deleteOperationSettings;
432     private final UnaryCallSettings.Builder<GetHealthCheckRequest, HealthCheck> getSettings;
433     private final UnaryCallSettings.Builder<InsertHealthCheckRequest, Operation> insertSettings;
434     private final OperationCallSettings.Builder<InsertHealthCheckRequest, Operation, Operation>
435         insertOperationSettings;
436     private final PagedCallSettings.Builder<
437             ListHealthChecksRequest, HealthCheckList, ListPagedResponse>
438         listSettings;
439     private final UnaryCallSettings.Builder<PatchHealthCheckRequest, Operation> patchSettings;
440     private final OperationCallSettings.Builder<PatchHealthCheckRequest, Operation, Operation>
441         patchOperationSettings;
442     private final UnaryCallSettings.Builder<UpdateHealthCheckRequest, Operation> updateSettings;
443     private final OperationCallSettings.Builder<UpdateHealthCheckRequest, Operation, Operation>
444         updateOperationSettings;
445     private static final ImmutableMap<String, ImmutableSet<StatusCode.Code>>
446         RETRYABLE_CODE_DEFINITIONS;
447 
448     static {
449       ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions =
450           ImmutableMap.builder();
451       definitions.put(
452           "retry_policy_0_codes",
453           ImmutableSet.copyOf(
454               Lists.<StatusCode.Code>newArrayList(
455                   StatusCode.Code.DEADLINE_EXCEEDED, StatusCode.Code.UNAVAILABLE)));
456       definitions.put(
457           "no_retry_1_codes", ImmutableSet.copyOf(Lists.<StatusCode.Code>newArrayList()));
458       RETRYABLE_CODE_DEFINITIONS = definitions.build();
459     }
460 
461     private static final ImmutableMap<String, RetrySettings> RETRY_PARAM_DEFINITIONS;
462 
463     static {
464       ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder();
465       RetrySettings settings = null;
466       settings =
467           RetrySettings.newBuilder()
468               .setInitialRetryDelay(Duration.ofMillis(100L))
469               .setRetryDelayMultiplier(1.3)
470               .setMaxRetryDelay(Duration.ofMillis(60000L))
471               .setInitialRpcTimeout(Duration.ofMillis(600000L))
472               .setRpcTimeoutMultiplier(1.0)
473               .setMaxRpcTimeout(Duration.ofMillis(600000L))
474               .setTotalTimeout(Duration.ofMillis(600000L))
475               .build();
476       definitions.put("retry_policy_0_params", settings);
477       settings =
478           RetrySettings.newBuilder()
479               .setInitialRpcTimeout(Duration.ofMillis(600000L))
480               .setRpcTimeoutMultiplier(1.0)
481               .setMaxRpcTimeout(Duration.ofMillis(600000L))
482               .setTotalTimeout(Duration.ofMillis(600000L))
483               .build();
484       definitions.put("no_retry_1_params", settings);
485       RETRY_PARAM_DEFINITIONS = definitions.build();
486     }
487 
Builder()488     protected Builder() {
489       this(((ClientContext) null));
490     }
491 
Builder(ClientContext clientContext)492     protected Builder(ClientContext clientContext) {
493       super(clientContext);
494 
495       aggregatedListSettings = PagedCallSettings.newBuilder(AGGREGATED_LIST_PAGE_STR_FACT);
496       deleteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
497       deleteOperationSettings = OperationCallSettings.newBuilder();
498       getSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
499       insertSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
500       insertOperationSettings = OperationCallSettings.newBuilder();
501       listSettings = PagedCallSettings.newBuilder(LIST_PAGE_STR_FACT);
502       patchSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
503       patchOperationSettings = OperationCallSettings.newBuilder();
504       updateSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
505       updateOperationSettings = OperationCallSettings.newBuilder();
506 
507       unaryMethodSettingsBuilders =
508           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
509               aggregatedListSettings,
510               deleteSettings,
511               getSettings,
512               insertSettings,
513               listSettings,
514               patchSettings,
515               updateSettings);
516       initDefaults(this);
517     }
518 
Builder(HealthChecksStubSettings settings)519     protected Builder(HealthChecksStubSettings settings) {
520       super(settings);
521 
522       aggregatedListSettings = settings.aggregatedListSettings.toBuilder();
523       deleteSettings = settings.deleteSettings.toBuilder();
524       deleteOperationSettings = settings.deleteOperationSettings.toBuilder();
525       getSettings = settings.getSettings.toBuilder();
526       insertSettings = settings.insertSettings.toBuilder();
527       insertOperationSettings = settings.insertOperationSettings.toBuilder();
528       listSettings = settings.listSettings.toBuilder();
529       patchSettings = settings.patchSettings.toBuilder();
530       patchOperationSettings = settings.patchOperationSettings.toBuilder();
531       updateSettings = settings.updateSettings.toBuilder();
532       updateOperationSettings = settings.updateOperationSettings.toBuilder();
533 
534       unaryMethodSettingsBuilders =
535           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
536               aggregatedListSettings,
537               deleteSettings,
538               getSettings,
539               insertSettings,
540               listSettings,
541               patchSettings,
542               updateSettings);
543     }
544 
createDefault()545     private static Builder createDefault() {
546       Builder builder = new Builder(((ClientContext) null));
547 
548       builder.setTransportChannelProvider(defaultTransportChannelProvider());
549       builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
550       builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build());
551       builder.setEndpoint(getDefaultEndpoint());
552       builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
553       builder.setSwitchToMtlsEndpointAllowed(true);
554 
555       return initDefaults(builder);
556     }
557 
initDefaults(Builder builder)558     private static Builder initDefaults(Builder builder) {
559       builder
560           .aggregatedListSettings()
561           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
562           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
563 
564       builder
565           .deleteSettings()
566           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
567           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
568 
569       builder
570           .getSettings()
571           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
572           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
573 
574       builder
575           .insertSettings()
576           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
577           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
578 
579       builder
580           .listSettings()
581           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
582           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
583 
584       builder
585           .patchSettings()
586           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
587           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
588 
589       builder
590           .updateSettings()
591           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
592           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
593 
594       builder
595           .deleteOperationSettings()
596           .setInitialCallSettings(
597               UnaryCallSettings
598                   .<DeleteHealthCheckRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
599                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
600                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
601                   .build())
602           .setResponseTransformer(
603               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
604           .setMetadataTransformer(
605               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
606           .setPollingAlgorithm(
607               OperationTimedPollAlgorithm.create(
608                   RetrySettings.newBuilder()
609                       .setInitialRetryDelay(Duration.ofMillis(500L))
610                       .setRetryDelayMultiplier(1.5)
611                       .setMaxRetryDelay(Duration.ofMillis(20000L))
612                       .setInitialRpcTimeout(Duration.ZERO)
613                       .setRpcTimeoutMultiplier(1.0)
614                       .setMaxRpcTimeout(Duration.ZERO)
615                       .setTotalTimeout(Duration.ofMillis(600000L))
616                       .build()));
617 
618       builder
619           .insertOperationSettings()
620           .setInitialCallSettings(
621               UnaryCallSettings
622                   .<InsertHealthCheckRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
623                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
624                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
625                   .build())
626           .setResponseTransformer(
627               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
628           .setMetadataTransformer(
629               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
630           .setPollingAlgorithm(
631               OperationTimedPollAlgorithm.create(
632                   RetrySettings.newBuilder()
633                       .setInitialRetryDelay(Duration.ofMillis(500L))
634                       .setRetryDelayMultiplier(1.5)
635                       .setMaxRetryDelay(Duration.ofMillis(20000L))
636                       .setInitialRpcTimeout(Duration.ZERO)
637                       .setRpcTimeoutMultiplier(1.0)
638                       .setMaxRpcTimeout(Duration.ZERO)
639                       .setTotalTimeout(Duration.ofMillis(600000L))
640                       .build()));
641 
642       builder
643           .patchOperationSettings()
644           .setInitialCallSettings(
645               UnaryCallSettings
646                   .<PatchHealthCheckRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
647                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
648                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
649                   .build())
650           .setResponseTransformer(
651               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
652           .setMetadataTransformer(
653               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
654           .setPollingAlgorithm(
655               OperationTimedPollAlgorithm.create(
656                   RetrySettings.newBuilder()
657                       .setInitialRetryDelay(Duration.ofMillis(500L))
658                       .setRetryDelayMultiplier(1.5)
659                       .setMaxRetryDelay(Duration.ofMillis(20000L))
660                       .setInitialRpcTimeout(Duration.ZERO)
661                       .setRpcTimeoutMultiplier(1.0)
662                       .setMaxRpcTimeout(Duration.ZERO)
663                       .setTotalTimeout(Duration.ofMillis(600000L))
664                       .build()));
665 
666       builder
667           .updateOperationSettings()
668           .setInitialCallSettings(
669               UnaryCallSettings
670                   .<UpdateHealthCheckRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
671                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
672                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
673                   .build())
674           .setResponseTransformer(
675               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
676           .setMetadataTransformer(
677               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
678           .setPollingAlgorithm(
679               OperationTimedPollAlgorithm.create(
680                   RetrySettings.newBuilder()
681                       .setInitialRetryDelay(Duration.ofMillis(500L))
682                       .setRetryDelayMultiplier(1.5)
683                       .setMaxRetryDelay(Duration.ofMillis(20000L))
684                       .setInitialRpcTimeout(Duration.ZERO)
685                       .setRpcTimeoutMultiplier(1.0)
686                       .setMaxRpcTimeout(Duration.ZERO)
687                       .setTotalTimeout(Duration.ofMillis(600000L))
688                       .build()));
689 
690       return builder;
691     }
692 
693     /**
694      * Applies the given settings updater function to all of the unary API methods in this service.
695      *
696      * <p>Note: This method does not support applying settings to streaming methods.
697      */
applyToAllUnaryMethods( ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater)698     public Builder applyToAllUnaryMethods(
699         ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater) {
700       super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater);
701       return this;
702     }
703 
unaryMethodSettingsBuilders()704     public ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders() {
705       return unaryMethodSettingsBuilders;
706     }
707 
708     /** Returns the builder for the settings used for calls to aggregatedList. */
709     public PagedCallSettings.Builder<
710             AggregatedListHealthChecksRequest,
711             HealthChecksAggregatedList,
712             AggregatedListPagedResponse>
aggregatedListSettings()713         aggregatedListSettings() {
714       return aggregatedListSettings;
715     }
716 
717     /** Returns the builder for the settings used for calls to delete. */
deleteSettings()718     public UnaryCallSettings.Builder<DeleteHealthCheckRequest, Operation> deleteSettings() {
719       return deleteSettings;
720     }
721 
722     /** Returns the builder for the settings used for calls to delete. */
723     @BetaApi(
724         "The surface for use by generated code is not stable yet and may change in the future.")
725     public OperationCallSettings.Builder<DeleteHealthCheckRequest, Operation, Operation>
deleteOperationSettings()726         deleteOperationSettings() {
727       return deleteOperationSettings;
728     }
729 
730     /** Returns the builder for the settings used for calls to get. */
getSettings()731     public UnaryCallSettings.Builder<GetHealthCheckRequest, HealthCheck> getSettings() {
732       return getSettings;
733     }
734 
735     /** Returns the builder for the settings used for calls to insert. */
insertSettings()736     public UnaryCallSettings.Builder<InsertHealthCheckRequest, Operation> insertSettings() {
737       return insertSettings;
738     }
739 
740     /** Returns the builder for the settings used for calls to insert. */
741     @BetaApi(
742         "The surface for use by generated code is not stable yet and may change in the future.")
743     public OperationCallSettings.Builder<InsertHealthCheckRequest, Operation, Operation>
insertOperationSettings()744         insertOperationSettings() {
745       return insertOperationSettings;
746     }
747 
748     /** Returns the builder for the settings used for calls to list. */
749     public PagedCallSettings.Builder<ListHealthChecksRequest, HealthCheckList, ListPagedResponse>
listSettings()750         listSettings() {
751       return listSettings;
752     }
753 
754     /** Returns the builder for the settings used for calls to patch. */
patchSettings()755     public UnaryCallSettings.Builder<PatchHealthCheckRequest, Operation> patchSettings() {
756       return patchSettings;
757     }
758 
759     /** Returns the builder for the settings used for calls to patch. */
760     @BetaApi(
761         "The surface for use by generated code is not stable yet and may change in the future.")
762     public OperationCallSettings.Builder<PatchHealthCheckRequest, Operation, Operation>
patchOperationSettings()763         patchOperationSettings() {
764       return patchOperationSettings;
765     }
766 
767     /** Returns the builder for the settings used for calls to update. */
updateSettings()768     public UnaryCallSettings.Builder<UpdateHealthCheckRequest, Operation> updateSettings() {
769       return updateSettings;
770     }
771 
772     /** Returns the builder for the settings used for calls to update. */
773     @BetaApi(
774         "The surface for use by generated code is not stable yet and may change in the future.")
775     public OperationCallSettings.Builder<UpdateHealthCheckRequest, Operation, Operation>
updateOperationSettings()776         updateOperationSettings() {
777       return updateOperationSettings;
778     }
779 
780     @Override
build()781     public HealthChecksStubSettings build() throws IOException {
782       return new HealthChecksStubSettings(this);
783     }
784   }
785 }
786