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