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