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