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