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