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