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