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