• 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.v4.stub;
18 
19 import static com.google.cloud.talent.v4.CompanyServiceClient.ListCompaniesPagedResponse;
20 
21 import com.google.api.core.ApiFunction;
22 import com.google.api.core.ApiFuture;
23 import com.google.api.core.BetaApi;
24 import com.google.api.gax.core.GaxProperties;
25 import com.google.api.gax.core.GoogleCredentialsProvider;
26 import com.google.api.gax.core.InstantiatingExecutorProvider;
27 import com.google.api.gax.grpc.GaxGrpcProperties;
28 import com.google.api.gax.grpc.GrpcTransportChannel;
29 import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
30 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
31 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
32 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
33 import com.google.api.gax.retrying.RetrySettings;
34 import com.google.api.gax.rpc.ApiCallContext;
35 import com.google.api.gax.rpc.ApiClientHeaderProvider;
36 import com.google.api.gax.rpc.ClientContext;
37 import com.google.api.gax.rpc.PageContext;
38 import com.google.api.gax.rpc.PagedCallSettings;
39 import com.google.api.gax.rpc.PagedListDescriptor;
40 import com.google.api.gax.rpc.PagedListResponseFactory;
41 import com.google.api.gax.rpc.StatusCode;
42 import com.google.api.gax.rpc.StubSettings;
43 import com.google.api.gax.rpc.TransportChannelProvider;
44 import com.google.api.gax.rpc.UnaryCallSettings;
45 import com.google.api.gax.rpc.UnaryCallable;
46 import com.google.cloud.talent.v4.Company;
47 import com.google.cloud.talent.v4.CreateCompanyRequest;
48 import com.google.cloud.talent.v4.DeleteCompanyRequest;
49 import com.google.cloud.talent.v4.GetCompanyRequest;
50 import com.google.cloud.talent.v4.ListCompaniesRequest;
51 import com.google.cloud.talent.v4.ListCompaniesResponse;
52 import com.google.cloud.talent.v4.UpdateCompanyRequest;
53 import com.google.common.collect.ImmutableList;
54 import com.google.common.collect.ImmutableMap;
55 import com.google.common.collect.ImmutableSet;
56 import com.google.common.collect.Lists;
57 import com.google.protobuf.Empty;
58 import java.io.IOException;
59 import java.util.List;
60 import javax.annotation.Generated;
61 import org.threeten.bp.Duration;
62 
63 // AUTO-GENERATED DOCUMENTATION AND CLASS.
64 /**
65  * Settings class to configure an instance of {@link CompanyServiceStub}.
66  *
67  * <p>The default instance has everything set to sensible defaults:
68  *
69  * <ul>
70  *   <li>The default service address (jobs.googleapis.com) and default port (443) are used.
71  *   <li>Credentials are acquired automatically through Application Default Credentials.
72  *   <li>Retries are configured for idempotent methods but not for non-idempotent methods.
73  * </ul>
74  *
75  * <p>The builder of this class is recursive, so contained classes are themselves builders. When
76  * build() is called, the tree of builders is called to create the complete settings object.
77  *
78  * <p>For example, to set the total timeout of createCompany to 30 seconds:
79  *
80  * <pre>{@code
81  * // This snippet has been automatically generated and should be regarded as a code template only.
82  * // It will require modifications to work:
83  * // - It may require correct/in-range values for request initialization.
84  * // - It may require specifying regional endpoints when creating the service client as shown in
85  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
86  * CompanyServiceStubSettings.Builder companyServiceSettingsBuilder =
87  *     CompanyServiceStubSettings.newBuilder();
88  * companyServiceSettingsBuilder
89  *     .createCompanySettings()
90  *     .setRetrySettings(
91  *         companyServiceSettingsBuilder
92  *             .createCompanySettings()
93  *             .getRetrySettings()
94  *             .toBuilder()
95  *             .setTotalTimeout(Duration.ofSeconds(30))
96  *             .build());
97  * CompanyServiceStubSettings companyServiceSettings = companyServiceSettingsBuilder.build();
98  * }</pre>
99  */
100 @Generated("by gapic-generator-java")
101 public class CompanyServiceStubSettings extends StubSettings<CompanyServiceStubSettings> {
102   /** The default scopes of the service. */
103   private static final ImmutableList<String> DEFAULT_SERVICE_SCOPES =
104       ImmutableList.<String>builder()
105           .add("https://www.googleapis.com/auth/cloud-platform")
106           .add("https://www.googleapis.com/auth/jobs")
107           .build();
108 
109   private final UnaryCallSettings<CreateCompanyRequest, Company> createCompanySettings;
110   private final UnaryCallSettings<GetCompanyRequest, Company> getCompanySettings;
111   private final UnaryCallSettings<UpdateCompanyRequest, Company> updateCompanySettings;
112   private final UnaryCallSettings<DeleteCompanyRequest, Empty> deleteCompanySettings;
113   private final PagedCallSettings<
114           ListCompaniesRequest, ListCompaniesResponse, ListCompaniesPagedResponse>
115       listCompaniesSettings;
116 
117   private static final PagedListDescriptor<ListCompaniesRequest, ListCompaniesResponse, Company>
118       LIST_COMPANIES_PAGE_STR_DESC =
119           new PagedListDescriptor<ListCompaniesRequest, ListCompaniesResponse, Company>() {
120             @Override
121             public String emptyToken() {
122               return "";
123             }
124 
125             @Override
126             public ListCompaniesRequest injectToken(ListCompaniesRequest payload, String token) {
127               return ListCompaniesRequest.newBuilder(payload).setPageToken(token).build();
128             }
129 
130             @Override
131             public ListCompaniesRequest injectPageSize(ListCompaniesRequest payload, int pageSize) {
132               return ListCompaniesRequest.newBuilder(payload).setPageSize(pageSize).build();
133             }
134 
135             @Override
136             public Integer extractPageSize(ListCompaniesRequest payload) {
137               return payload.getPageSize();
138             }
139 
140             @Override
141             public String extractNextToken(ListCompaniesResponse payload) {
142               return payload.getNextPageToken();
143             }
144 
145             @Override
146             public Iterable<Company> extractResources(ListCompaniesResponse payload) {
147               return payload.getCompaniesList() == null
148                   ? ImmutableList.<Company>of()
149                   : payload.getCompaniesList();
150             }
151           };
152 
153   private static final PagedListResponseFactory<
154           ListCompaniesRequest, ListCompaniesResponse, ListCompaniesPagedResponse>
155       LIST_COMPANIES_PAGE_STR_FACT =
156           new PagedListResponseFactory<
157               ListCompaniesRequest, ListCompaniesResponse, ListCompaniesPagedResponse>() {
158             @Override
159             public ApiFuture<ListCompaniesPagedResponse> getFuturePagedResponse(
160                 UnaryCallable<ListCompaniesRequest, ListCompaniesResponse> callable,
161                 ListCompaniesRequest request,
162                 ApiCallContext context,
163                 ApiFuture<ListCompaniesResponse> futureResponse) {
164               PageContext<ListCompaniesRequest, ListCompaniesResponse, Company> pageContext =
165                   PageContext.create(callable, LIST_COMPANIES_PAGE_STR_DESC, request, context);
166               return ListCompaniesPagedResponse.createAsync(pageContext, futureResponse);
167             }
168           };
169 
170   /** Returns the object with the settings used for calls to createCompany. */
createCompanySettings()171   public UnaryCallSettings<CreateCompanyRequest, Company> createCompanySettings() {
172     return createCompanySettings;
173   }
174 
175   /** Returns the object with the settings used for calls to getCompany. */
getCompanySettings()176   public UnaryCallSettings<GetCompanyRequest, Company> getCompanySettings() {
177     return getCompanySettings;
178   }
179 
180   /** Returns the object with the settings used for calls to updateCompany. */
updateCompanySettings()181   public UnaryCallSettings<UpdateCompanyRequest, Company> updateCompanySettings() {
182     return updateCompanySettings;
183   }
184 
185   /** Returns the object with the settings used for calls to deleteCompany. */
deleteCompanySettings()186   public UnaryCallSettings<DeleteCompanyRequest, Empty> deleteCompanySettings() {
187     return deleteCompanySettings;
188   }
189 
190   /** Returns the object with the settings used for calls to listCompanies. */
191   public PagedCallSettings<ListCompaniesRequest, ListCompaniesResponse, ListCompaniesPagedResponse>
listCompaniesSettings()192       listCompaniesSettings() {
193     return listCompaniesSettings;
194   }
195 
createStub()196   public CompanyServiceStub createStub() throws IOException {
197     if (getTransportChannelProvider()
198         .getTransportName()
199         .equals(GrpcTransportChannel.getGrpcTransportName())) {
200       return GrpcCompanyServiceStub.create(this);
201     }
202     if (getTransportChannelProvider()
203         .getTransportName()
204         .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) {
205       return HttpJsonCompanyServiceStub.create(this);
206     }
207     throw new UnsupportedOperationException(
208         String.format(
209             "Transport not supported: %s", getTransportChannelProvider().getTransportName()));
210   }
211 
212   /** Returns a builder for the default ExecutorProvider for this service. */
defaultExecutorProviderBuilder()213   public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() {
214     return InstantiatingExecutorProvider.newBuilder();
215   }
216 
217   /** Returns the default service endpoint. */
getDefaultEndpoint()218   public static String getDefaultEndpoint() {
219     return "jobs.googleapis.com:443";
220   }
221 
222   /** Returns the default mTLS service endpoint. */
getDefaultMtlsEndpoint()223   public static String getDefaultMtlsEndpoint() {
224     return "jobs.mtls.googleapis.com:443";
225   }
226 
227   /** Returns the default service scopes. */
getDefaultServiceScopes()228   public static List<String> getDefaultServiceScopes() {
229     return DEFAULT_SERVICE_SCOPES;
230   }
231 
232   /** Returns a builder for the default credentials for this service. */
defaultCredentialsProviderBuilder()233   public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
234     return GoogleCredentialsProvider.newBuilder()
235         .setScopesToApply(DEFAULT_SERVICE_SCOPES)
236         .setUseJwtAccessWithScope(true);
237   }
238 
239   /** Returns a builder for the default gRPC ChannelProvider for this service. */
defaultGrpcTransportProviderBuilder()240   public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
241     return InstantiatingGrpcChannelProvider.newBuilder()
242         .setMaxInboundMessageSize(Integer.MAX_VALUE);
243   }
244 
245   /** Returns a builder for the default REST ChannelProvider for this service. */
246   @BetaApi
247   public static InstantiatingHttpJsonChannelProvider.Builder
defaultHttpJsonTransportProviderBuilder()248       defaultHttpJsonTransportProviderBuilder() {
249     return InstantiatingHttpJsonChannelProvider.newBuilder();
250   }
251 
defaultTransportChannelProvider()252   public static TransportChannelProvider defaultTransportChannelProvider() {
253     return defaultGrpcTransportProviderBuilder().build();
254   }
255 
256   @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
defaultGrpcApiClientHeaderProviderBuilder()257   public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() {
258     return ApiClientHeaderProvider.newBuilder()
259         .setGeneratedLibToken(
260             "gapic", GaxProperties.getLibraryVersion(CompanyServiceStubSettings.class))
261         .setTransportToken(
262             GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion());
263   }
264 
265   @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
defaultHttpJsonApiClientHeaderProviderBuilder()266   public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() {
267     return ApiClientHeaderProvider.newBuilder()
268         .setGeneratedLibToken(
269             "gapic", GaxProperties.getLibraryVersion(CompanyServiceStubSettings.class))
270         .setTransportToken(
271             GaxHttpJsonProperties.getHttpJsonTokenName(),
272             GaxHttpJsonProperties.getHttpJsonVersion());
273   }
274 
defaultApiClientHeaderProviderBuilder()275   public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
276     return CompanyServiceStubSettings.defaultGrpcApiClientHeaderProviderBuilder();
277   }
278 
279   /** Returns a new gRPC builder for this class. */
newBuilder()280   public static Builder newBuilder() {
281     return Builder.createDefault();
282   }
283 
284   /** Returns a new REST builder for this class. */
newHttpJsonBuilder()285   public static Builder newHttpJsonBuilder() {
286     return Builder.createHttpJsonDefault();
287   }
288 
289   /** Returns a new builder for this class. */
newBuilder(ClientContext clientContext)290   public static Builder newBuilder(ClientContext clientContext) {
291     return new Builder(clientContext);
292   }
293 
294   /** Returns a builder containing all the values of this settings class. */
toBuilder()295   public Builder toBuilder() {
296     return new Builder(this);
297   }
298 
CompanyServiceStubSettings(Builder settingsBuilder)299   protected CompanyServiceStubSettings(Builder settingsBuilder) throws IOException {
300     super(settingsBuilder);
301 
302     createCompanySettings = settingsBuilder.createCompanySettings().build();
303     getCompanySettings = settingsBuilder.getCompanySettings().build();
304     updateCompanySettings = settingsBuilder.updateCompanySettings().build();
305     deleteCompanySettings = settingsBuilder.deleteCompanySettings().build();
306     listCompaniesSettings = settingsBuilder.listCompaniesSettings().build();
307   }
308 
309   /** Builder for CompanyServiceStubSettings. */
310   public static class Builder extends StubSettings.Builder<CompanyServiceStubSettings, Builder> {
311     private final ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders;
312     private final UnaryCallSettings.Builder<CreateCompanyRequest, Company> createCompanySettings;
313     private final UnaryCallSettings.Builder<GetCompanyRequest, Company> getCompanySettings;
314     private final UnaryCallSettings.Builder<UpdateCompanyRequest, Company> updateCompanySettings;
315     private final UnaryCallSettings.Builder<DeleteCompanyRequest, Empty> deleteCompanySettings;
316     private final PagedCallSettings.Builder<
317             ListCompaniesRequest, ListCompaniesResponse, ListCompaniesPagedResponse>
318         listCompaniesSettings;
319     private static final ImmutableMap<String, ImmutableSet<StatusCode.Code>>
320         RETRYABLE_CODE_DEFINITIONS;
321 
322     static {
323       ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions =
324           ImmutableMap.builder();
325       definitions.put(
326           "no_retry_5_codes", ImmutableSet.copyOf(Lists.<StatusCode.Code>newArrayList()));
327       definitions.put(
328           "retry_policy_6_codes",
329           ImmutableSet.copyOf(
330               Lists.<StatusCode.Code>newArrayList(
331                   StatusCode.Code.DEADLINE_EXCEEDED, StatusCode.Code.UNAVAILABLE)));
332       RETRYABLE_CODE_DEFINITIONS = definitions.build();
333     }
334 
335     private static final ImmutableMap<String, RetrySettings> RETRY_PARAM_DEFINITIONS;
336 
337     static {
338       ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder();
339       RetrySettings settings = null;
340       settings =
341           RetrySettings.newBuilder()
342               .setInitialRpcTimeout(Duration.ofMillis(30000L))
343               .setRpcTimeoutMultiplier(1.0)
344               .setMaxRpcTimeout(Duration.ofMillis(30000L))
345               .setTotalTimeout(Duration.ofMillis(30000L))
346               .build();
347       definitions.put("no_retry_5_params", settings);
348       settings =
349           RetrySettings.newBuilder()
350               .setInitialRetryDelay(Duration.ofMillis(100L))
351               .setRetryDelayMultiplier(1.3)
352               .setMaxRetryDelay(Duration.ofMillis(60000L))
353               .setInitialRpcTimeout(Duration.ofMillis(30000L))
354               .setRpcTimeoutMultiplier(1.0)
355               .setMaxRpcTimeout(Duration.ofMillis(30000L))
356               .setTotalTimeout(Duration.ofMillis(30000L))
357               .build();
358       definitions.put("retry_policy_6_params", settings);
359       RETRY_PARAM_DEFINITIONS = definitions.build();
360     }
361 
Builder()362     protected Builder() {
363       this(((ClientContext) null));
364     }
365 
Builder(ClientContext clientContext)366     protected Builder(ClientContext clientContext) {
367       super(clientContext);
368 
369       createCompanySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
370       getCompanySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
371       updateCompanySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
372       deleteCompanySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
373       listCompaniesSettings = PagedCallSettings.newBuilder(LIST_COMPANIES_PAGE_STR_FACT);
374 
375       unaryMethodSettingsBuilders =
376           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
377               createCompanySettings,
378               getCompanySettings,
379               updateCompanySettings,
380               deleteCompanySettings,
381               listCompaniesSettings);
382       initDefaults(this);
383     }
384 
Builder(CompanyServiceStubSettings settings)385     protected Builder(CompanyServiceStubSettings settings) {
386       super(settings);
387 
388       createCompanySettings = settings.createCompanySettings.toBuilder();
389       getCompanySettings = settings.getCompanySettings.toBuilder();
390       updateCompanySettings = settings.updateCompanySettings.toBuilder();
391       deleteCompanySettings = settings.deleteCompanySettings.toBuilder();
392       listCompaniesSettings = settings.listCompaniesSettings.toBuilder();
393 
394       unaryMethodSettingsBuilders =
395           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
396               createCompanySettings,
397               getCompanySettings,
398               updateCompanySettings,
399               deleteCompanySettings,
400               listCompaniesSettings);
401     }
402 
createDefault()403     private static Builder createDefault() {
404       Builder builder = new Builder(((ClientContext) null));
405 
406       builder.setTransportChannelProvider(defaultTransportChannelProvider());
407       builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
408       builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build());
409       builder.setEndpoint(getDefaultEndpoint());
410       builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
411       builder.setSwitchToMtlsEndpointAllowed(true);
412 
413       return initDefaults(builder);
414     }
415 
createHttpJsonDefault()416     private static Builder createHttpJsonDefault() {
417       Builder builder = new Builder(((ClientContext) null));
418 
419       builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build());
420       builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
421       builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build());
422       builder.setEndpoint(getDefaultEndpoint());
423       builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
424       builder.setSwitchToMtlsEndpointAllowed(true);
425 
426       return initDefaults(builder);
427     }
428 
initDefaults(Builder builder)429     private static Builder initDefaults(Builder builder) {
430       builder
431           .createCompanySettings()
432           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_5_codes"))
433           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_5_params"));
434 
435       builder
436           .getCompanySettings()
437           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_6_codes"))
438           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_6_params"));
439 
440       builder
441           .updateCompanySettings()
442           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_5_codes"))
443           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_5_params"));
444 
445       builder
446           .deleteCompanySettings()
447           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_6_codes"))
448           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_6_params"));
449 
450       builder
451           .listCompaniesSettings()
452           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_6_codes"))
453           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_6_params"));
454 
455       return builder;
456     }
457 
458     /**
459      * Applies the given settings updater function to all of the unary API methods in this service.
460      *
461      * <p>Note: This method does not support applying settings to streaming methods.
462      */
applyToAllUnaryMethods( ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater)463     public Builder applyToAllUnaryMethods(
464         ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater) {
465       super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater);
466       return this;
467     }
468 
unaryMethodSettingsBuilders()469     public ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders() {
470       return unaryMethodSettingsBuilders;
471     }
472 
473     /** Returns the builder for the settings used for calls to createCompany. */
createCompanySettings()474     public UnaryCallSettings.Builder<CreateCompanyRequest, Company> createCompanySettings() {
475       return createCompanySettings;
476     }
477 
478     /** Returns the builder for the settings used for calls to getCompany. */
getCompanySettings()479     public UnaryCallSettings.Builder<GetCompanyRequest, Company> getCompanySettings() {
480       return getCompanySettings;
481     }
482 
483     /** Returns the builder for the settings used for calls to updateCompany. */
updateCompanySettings()484     public UnaryCallSettings.Builder<UpdateCompanyRequest, Company> updateCompanySettings() {
485       return updateCompanySettings;
486     }
487 
488     /** Returns the builder for the settings used for calls to deleteCompany. */
deleteCompanySettings()489     public UnaryCallSettings.Builder<DeleteCompanyRequest, Empty> deleteCompanySettings() {
490       return deleteCompanySettings;
491     }
492 
493     /** Returns the builder for the settings used for calls to listCompanies. */
494     public PagedCallSettings.Builder<
495             ListCompaniesRequest, ListCompaniesResponse, ListCompaniesPagedResponse>
listCompaniesSettings()496         listCompaniesSettings() {
497       return listCompaniesSettings;
498     }
499 
500     @Override
build()501     public CompanyServiceStubSettings build() throws IOException {
502       return new CompanyServiceStubSettings(this);
503     }
504   }
505 }
506