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.TenantServiceClient.ListTenantsPagedResponse; 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.CreateTenantRequest; 47 import com.google.cloud.talent.v4.DeleteTenantRequest; 48 import com.google.cloud.talent.v4.GetTenantRequest; 49 import com.google.cloud.talent.v4.ListTenantsRequest; 50 import com.google.cloud.talent.v4.ListTenantsResponse; 51 import com.google.cloud.talent.v4.Tenant; 52 import com.google.cloud.talent.v4.UpdateTenantRequest; 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 TenantServiceStub}. 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 createTenant 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 * TenantServiceStubSettings.Builder tenantServiceSettingsBuilder = 87 * TenantServiceStubSettings.newBuilder(); 88 * tenantServiceSettingsBuilder 89 * .createTenantSettings() 90 * .setRetrySettings( 91 * tenantServiceSettingsBuilder 92 * .createTenantSettings() 93 * .getRetrySettings() 94 * .toBuilder() 95 * .setTotalTimeout(Duration.ofSeconds(30)) 96 * .build()); 97 * TenantServiceStubSettings tenantServiceSettings = tenantServiceSettingsBuilder.build(); 98 * }</pre> 99 */ 100 @Generated("by gapic-generator-java") 101 public class TenantServiceStubSettings extends StubSettings<TenantServiceStubSettings> { 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<CreateTenantRequest, Tenant> createTenantSettings; 110 private final UnaryCallSettings<GetTenantRequest, Tenant> getTenantSettings; 111 private final UnaryCallSettings<UpdateTenantRequest, Tenant> updateTenantSettings; 112 private final UnaryCallSettings<DeleteTenantRequest, Empty> deleteTenantSettings; 113 private final PagedCallSettings<ListTenantsRequest, ListTenantsResponse, ListTenantsPagedResponse> 114 listTenantsSettings; 115 116 private static final PagedListDescriptor<ListTenantsRequest, ListTenantsResponse, Tenant> 117 LIST_TENANTS_PAGE_STR_DESC = 118 new PagedListDescriptor<ListTenantsRequest, ListTenantsResponse, Tenant>() { 119 @Override 120 public String emptyToken() { 121 return ""; 122 } 123 124 @Override 125 public ListTenantsRequest injectToken(ListTenantsRequest payload, String token) { 126 return ListTenantsRequest.newBuilder(payload).setPageToken(token).build(); 127 } 128 129 @Override 130 public ListTenantsRequest injectPageSize(ListTenantsRequest payload, int pageSize) { 131 return ListTenantsRequest.newBuilder(payload).setPageSize(pageSize).build(); 132 } 133 134 @Override 135 public Integer extractPageSize(ListTenantsRequest payload) { 136 return payload.getPageSize(); 137 } 138 139 @Override 140 public String extractNextToken(ListTenantsResponse payload) { 141 return payload.getNextPageToken(); 142 } 143 144 @Override 145 public Iterable<Tenant> extractResources(ListTenantsResponse payload) { 146 return payload.getTenantsList() == null 147 ? ImmutableList.<Tenant>of() 148 : payload.getTenantsList(); 149 } 150 }; 151 152 private static final PagedListResponseFactory< 153 ListTenantsRequest, ListTenantsResponse, ListTenantsPagedResponse> 154 LIST_TENANTS_PAGE_STR_FACT = 155 new PagedListResponseFactory< 156 ListTenantsRequest, ListTenantsResponse, ListTenantsPagedResponse>() { 157 @Override 158 public ApiFuture<ListTenantsPagedResponse> getFuturePagedResponse( 159 UnaryCallable<ListTenantsRequest, ListTenantsResponse> callable, 160 ListTenantsRequest request, 161 ApiCallContext context, 162 ApiFuture<ListTenantsResponse> futureResponse) { 163 PageContext<ListTenantsRequest, ListTenantsResponse, Tenant> pageContext = 164 PageContext.create(callable, LIST_TENANTS_PAGE_STR_DESC, request, context); 165 return ListTenantsPagedResponse.createAsync(pageContext, futureResponse); 166 } 167 }; 168 169 /** Returns the object with the settings used for calls to createTenant. */ createTenantSettings()170 public UnaryCallSettings<CreateTenantRequest, Tenant> createTenantSettings() { 171 return createTenantSettings; 172 } 173 174 /** Returns the object with the settings used for calls to getTenant. */ getTenantSettings()175 public UnaryCallSettings<GetTenantRequest, Tenant> getTenantSettings() { 176 return getTenantSettings; 177 } 178 179 /** Returns the object with the settings used for calls to updateTenant. */ updateTenantSettings()180 public UnaryCallSettings<UpdateTenantRequest, Tenant> updateTenantSettings() { 181 return updateTenantSettings; 182 } 183 184 /** Returns the object with the settings used for calls to deleteTenant. */ deleteTenantSettings()185 public UnaryCallSettings<DeleteTenantRequest, Empty> deleteTenantSettings() { 186 return deleteTenantSettings; 187 } 188 189 /** Returns the object with the settings used for calls to listTenants. */ 190 public PagedCallSettings<ListTenantsRequest, ListTenantsResponse, ListTenantsPagedResponse> listTenantsSettings()191 listTenantsSettings() { 192 return listTenantsSettings; 193 } 194 createStub()195 public TenantServiceStub createStub() throws IOException { 196 if (getTransportChannelProvider() 197 .getTransportName() 198 .equals(GrpcTransportChannel.getGrpcTransportName())) { 199 return GrpcTenantServiceStub.create(this); 200 } 201 if (getTransportChannelProvider() 202 .getTransportName() 203 .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { 204 return HttpJsonTenantServiceStub.create(this); 205 } 206 throw new UnsupportedOperationException( 207 String.format( 208 "Transport not supported: %s", getTransportChannelProvider().getTransportName())); 209 } 210 211 /** Returns a builder for the default ExecutorProvider for this service. */ defaultExecutorProviderBuilder()212 public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { 213 return InstantiatingExecutorProvider.newBuilder(); 214 } 215 216 /** Returns the default service endpoint. */ getDefaultEndpoint()217 public static String getDefaultEndpoint() { 218 return "jobs.googleapis.com:443"; 219 } 220 221 /** Returns the default mTLS service endpoint. */ getDefaultMtlsEndpoint()222 public static String getDefaultMtlsEndpoint() { 223 return "jobs.mtls.googleapis.com:443"; 224 } 225 226 /** Returns the default service scopes. */ getDefaultServiceScopes()227 public static List<String> getDefaultServiceScopes() { 228 return DEFAULT_SERVICE_SCOPES; 229 } 230 231 /** Returns a builder for the default credentials for this service. */ defaultCredentialsProviderBuilder()232 public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { 233 return GoogleCredentialsProvider.newBuilder() 234 .setScopesToApply(DEFAULT_SERVICE_SCOPES) 235 .setUseJwtAccessWithScope(true); 236 } 237 238 /** Returns a builder for the default gRPC ChannelProvider for this service. */ defaultGrpcTransportProviderBuilder()239 public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { 240 return InstantiatingGrpcChannelProvider.newBuilder() 241 .setMaxInboundMessageSize(Integer.MAX_VALUE); 242 } 243 244 /** Returns a builder for the default REST ChannelProvider for this service. */ 245 @BetaApi 246 public static InstantiatingHttpJsonChannelProvider.Builder defaultHttpJsonTransportProviderBuilder()247 defaultHttpJsonTransportProviderBuilder() { 248 return InstantiatingHttpJsonChannelProvider.newBuilder(); 249 } 250 defaultTransportChannelProvider()251 public static TransportChannelProvider defaultTransportChannelProvider() { 252 return defaultGrpcTransportProviderBuilder().build(); 253 } 254 255 @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") defaultGrpcApiClientHeaderProviderBuilder()256 public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { 257 return ApiClientHeaderProvider.newBuilder() 258 .setGeneratedLibToken( 259 "gapic", GaxProperties.getLibraryVersion(TenantServiceStubSettings.class)) 260 .setTransportToken( 261 GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); 262 } 263 264 @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") defaultHttpJsonApiClientHeaderProviderBuilder()265 public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { 266 return ApiClientHeaderProvider.newBuilder() 267 .setGeneratedLibToken( 268 "gapic", GaxProperties.getLibraryVersion(TenantServiceStubSettings.class)) 269 .setTransportToken( 270 GaxHttpJsonProperties.getHttpJsonTokenName(), 271 GaxHttpJsonProperties.getHttpJsonVersion()); 272 } 273 defaultApiClientHeaderProviderBuilder()274 public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { 275 return TenantServiceStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); 276 } 277 278 /** Returns a new gRPC builder for this class. */ newBuilder()279 public static Builder newBuilder() { 280 return Builder.createDefault(); 281 } 282 283 /** Returns a new REST builder for this class. */ newHttpJsonBuilder()284 public static Builder newHttpJsonBuilder() { 285 return Builder.createHttpJsonDefault(); 286 } 287 288 /** Returns a new builder for this class. */ newBuilder(ClientContext clientContext)289 public static Builder newBuilder(ClientContext clientContext) { 290 return new Builder(clientContext); 291 } 292 293 /** Returns a builder containing all the values of this settings class. */ toBuilder()294 public Builder toBuilder() { 295 return new Builder(this); 296 } 297 TenantServiceStubSettings(Builder settingsBuilder)298 protected TenantServiceStubSettings(Builder settingsBuilder) throws IOException { 299 super(settingsBuilder); 300 301 createTenantSettings = settingsBuilder.createTenantSettings().build(); 302 getTenantSettings = settingsBuilder.getTenantSettings().build(); 303 updateTenantSettings = settingsBuilder.updateTenantSettings().build(); 304 deleteTenantSettings = settingsBuilder.deleteTenantSettings().build(); 305 listTenantsSettings = settingsBuilder.listTenantsSettings().build(); 306 } 307 308 /** Builder for TenantServiceStubSettings. */ 309 public static class Builder extends StubSettings.Builder<TenantServiceStubSettings, Builder> { 310 private final ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders; 311 private final UnaryCallSettings.Builder<CreateTenantRequest, Tenant> createTenantSettings; 312 private final UnaryCallSettings.Builder<GetTenantRequest, Tenant> getTenantSettings; 313 private final UnaryCallSettings.Builder<UpdateTenantRequest, Tenant> updateTenantSettings; 314 private final UnaryCallSettings.Builder<DeleteTenantRequest, Empty> deleteTenantSettings; 315 private final PagedCallSettings.Builder< 316 ListTenantsRequest, ListTenantsResponse, ListTenantsPagedResponse> 317 listTenantsSettings; 318 private static final ImmutableMap<String, ImmutableSet<StatusCode.Code>> 319 RETRYABLE_CODE_DEFINITIONS; 320 321 static { 322 ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions = 323 ImmutableMap.builder(); 324 definitions.put( 325 "no_retry_4_codes", ImmutableSet.copyOf(Lists.<StatusCode.Code>newArrayList())); 326 definitions.put( 327 "retry_policy_0_codes", 328 ImmutableSet.copyOf( 329 Lists.<StatusCode.Code>newArrayList( 330 StatusCode.Code.DEADLINE_EXCEEDED, StatusCode.Code.UNAVAILABLE))); 331 RETRYABLE_CODE_DEFINITIONS = definitions.build(); 332 } 333 334 private static final ImmutableMap<String, RetrySettings> RETRY_PARAM_DEFINITIONS; 335 336 static { 337 ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder(); 338 RetrySettings settings = null; 339 settings = 340 RetrySettings.newBuilder() 341 .setInitialRpcTimeout(Duration.ofMillis(30000L)) 342 .setRpcTimeoutMultiplier(1.0) 343 .setMaxRpcTimeout(Duration.ofMillis(30000L)) 344 .setTotalTimeout(Duration.ofMillis(30000L)) 345 .build(); 346 definitions.put("no_retry_4_params", settings); 347 settings = 348 RetrySettings.newBuilder() 349 .setInitialRetryDelay(Duration.ofMillis(100L)) 350 .setRetryDelayMultiplier(1.3) 351 .setMaxRetryDelay(Duration.ofMillis(60000L)) 352 .setInitialRpcTimeout(Duration.ofMillis(30000L)) 353 .setRpcTimeoutMultiplier(1.0) 354 .setMaxRpcTimeout(Duration.ofMillis(30000L)) 355 .setTotalTimeout(Duration.ofMillis(30000L)) 356 .build(); 357 definitions.put("retry_policy_0_params", settings); 358 RETRY_PARAM_DEFINITIONS = definitions.build(); 359 } 360 Builder()361 protected Builder() { 362 this(((ClientContext) null)); 363 } 364 Builder(ClientContext clientContext)365 protected Builder(ClientContext clientContext) { 366 super(clientContext); 367 368 createTenantSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 369 getTenantSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 370 updateTenantSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 371 deleteTenantSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 372 listTenantsSettings = PagedCallSettings.newBuilder(LIST_TENANTS_PAGE_STR_FACT); 373 374 unaryMethodSettingsBuilders = 375 ImmutableList.<UnaryCallSettings.Builder<?, ?>>of( 376 createTenantSettings, 377 getTenantSettings, 378 updateTenantSettings, 379 deleteTenantSettings, 380 listTenantsSettings); 381 initDefaults(this); 382 } 383 Builder(TenantServiceStubSettings settings)384 protected Builder(TenantServiceStubSettings settings) { 385 super(settings); 386 387 createTenantSettings = settings.createTenantSettings.toBuilder(); 388 getTenantSettings = settings.getTenantSettings.toBuilder(); 389 updateTenantSettings = settings.updateTenantSettings.toBuilder(); 390 deleteTenantSettings = settings.deleteTenantSettings.toBuilder(); 391 listTenantsSettings = settings.listTenantsSettings.toBuilder(); 392 393 unaryMethodSettingsBuilders = 394 ImmutableList.<UnaryCallSettings.Builder<?, ?>>of( 395 createTenantSettings, 396 getTenantSettings, 397 updateTenantSettings, 398 deleteTenantSettings, 399 listTenantsSettings); 400 } 401 createDefault()402 private static Builder createDefault() { 403 Builder builder = new Builder(((ClientContext) null)); 404 405 builder.setTransportChannelProvider(defaultTransportChannelProvider()); 406 builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); 407 builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); 408 builder.setEndpoint(getDefaultEndpoint()); 409 builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); 410 builder.setSwitchToMtlsEndpointAllowed(true); 411 412 return initDefaults(builder); 413 } 414 createHttpJsonDefault()415 private static Builder createHttpJsonDefault() { 416 Builder builder = new Builder(((ClientContext) null)); 417 418 builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); 419 builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); 420 builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); 421 builder.setEndpoint(getDefaultEndpoint()); 422 builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); 423 builder.setSwitchToMtlsEndpointAllowed(true); 424 425 return initDefaults(builder); 426 } 427 initDefaults(Builder builder)428 private static Builder initDefaults(Builder builder) { 429 builder 430 .createTenantSettings() 431 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_4_codes")) 432 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_4_params")); 433 434 builder 435 .getTenantSettings() 436 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) 437 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); 438 439 builder 440 .updateTenantSettings() 441 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_4_codes")) 442 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_4_params")); 443 444 builder 445 .deleteTenantSettings() 446 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) 447 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); 448 449 builder 450 .listTenantsSettings() 451 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) 452 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); 453 454 return builder; 455 } 456 457 /** 458 * Applies the given settings updater function to all of the unary API methods in this service. 459 * 460 * <p>Note: This method does not support applying settings to streaming methods. 461 */ applyToAllUnaryMethods( ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater)462 public Builder applyToAllUnaryMethods( 463 ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater) { 464 super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater); 465 return this; 466 } 467 unaryMethodSettingsBuilders()468 public ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders() { 469 return unaryMethodSettingsBuilders; 470 } 471 472 /** Returns the builder for the settings used for calls to createTenant. */ createTenantSettings()473 public UnaryCallSettings.Builder<CreateTenantRequest, Tenant> createTenantSettings() { 474 return createTenantSettings; 475 } 476 477 /** Returns the builder for the settings used for calls to getTenant. */ getTenantSettings()478 public UnaryCallSettings.Builder<GetTenantRequest, Tenant> getTenantSettings() { 479 return getTenantSettings; 480 } 481 482 /** Returns the builder for the settings used for calls to updateTenant. */ updateTenantSettings()483 public UnaryCallSettings.Builder<UpdateTenantRequest, Tenant> updateTenantSettings() { 484 return updateTenantSettings; 485 } 486 487 /** Returns the builder for the settings used for calls to deleteTenant. */ deleteTenantSettings()488 public UnaryCallSettings.Builder<DeleteTenantRequest, Empty> deleteTenantSettings() { 489 return deleteTenantSettings; 490 } 491 492 /** Returns the builder for the settings used for calls to listTenants. */ 493 public PagedCallSettings.Builder< 494 ListTenantsRequest, ListTenantsResponse, ListTenantsPagedResponse> listTenantsSettings()495 listTenantsSettings() { 496 return listTenantsSettings; 497 } 498 499 @Override build()500 public TenantServiceStubSettings build() throws IOException { 501 return new TenantServiceStubSettings(this); 502 } 503 } 504 } 505