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.compute.v1.stub; 18 19 import static com.google.cloud.compute.v1.RoutesClient.ListPagedResponse; 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.httpjson.GaxHttpJsonProperties; 28 import com.google.api.gax.httpjson.HttpJsonTransportChannel; 29 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; 30 import com.google.api.gax.httpjson.ProtoOperationTransformers; 31 import com.google.api.gax.longrunning.OperationSnapshot; 32 import com.google.api.gax.longrunning.OperationTimedPollAlgorithm; 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.OperationCallSettings; 38 import com.google.api.gax.rpc.PageContext; 39 import com.google.api.gax.rpc.PagedCallSettings; 40 import com.google.api.gax.rpc.PagedListDescriptor; 41 import com.google.api.gax.rpc.PagedListResponseFactory; 42 import com.google.api.gax.rpc.StatusCode; 43 import com.google.api.gax.rpc.StubSettings; 44 import com.google.api.gax.rpc.TransportChannelProvider; 45 import com.google.api.gax.rpc.UnaryCallSettings; 46 import com.google.api.gax.rpc.UnaryCallable; 47 import com.google.cloud.compute.v1.DeleteRouteRequest; 48 import com.google.cloud.compute.v1.GetRouteRequest; 49 import com.google.cloud.compute.v1.InsertRouteRequest; 50 import com.google.cloud.compute.v1.ListRoutesRequest; 51 import com.google.cloud.compute.v1.Operation; 52 import com.google.cloud.compute.v1.Route; 53 import com.google.cloud.compute.v1.RouteList; 54 import com.google.common.collect.ImmutableList; 55 import com.google.common.collect.ImmutableMap; 56 import com.google.common.collect.ImmutableSet; 57 import com.google.common.collect.Lists; 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 RoutesStub}. 66 * 67 * <p>The default instance has everything set to sensible defaults: 68 * 69 * <ul> 70 * <li>The default service address (compute.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 get 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 * RoutesStubSettings.Builder routesSettingsBuilder = RoutesStubSettings.newBuilder(); 87 * routesSettingsBuilder 88 * .getSettings() 89 * .setRetrySettings( 90 * routesSettingsBuilder 91 * .getSettings() 92 * .getRetrySettings() 93 * .toBuilder() 94 * .setTotalTimeout(Duration.ofSeconds(30)) 95 * .build()); 96 * RoutesStubSettings routesSettings = routesSettingsBuilder.build(); 97 * }</pre> 98 */ 99 @Generated("by gapic-generator-java") 100 public class RoutesStubSettings extends StubSettings<RoutesStubSettings> { 101 /** The default scopes of the service. */ 102 private static final ImmutableList<String> DEFAULT_SERVICE_SCOPES = 103 ImmutableList.<String>builder() 104 .add("https://www.googleapis.com/auth/compute") 105 .add("https://www.googleapis.com/auth/cloud-platform") 106 .build(); 107 108 private final UnaryCallSettings<DeleteRouteRequest, Operation> deleteSettings; 109 private final OperationCallSettings<DeleteRouteRequest, Operation, Operation> 110 deleteOperationSettings; 111 private final UnaryCallSettings<GetRouteRequest, Route> getSettings; 112 private final UnaryCallSettings<InsertRouteRequest, Operation> insertSettings; 113 private final OperationCallSettings<InsertRouteRequest, Operation, Operation> 114 insertOperationSettings; 115 private final PagedCallSettings<ListRoutesRequest, RouteList, ListPagedResponse> listSettings; 116 117 private static final PagedListDescriptor<ListRoutesRequest, RouteList, Route> LIST_PAGE_STR_DESC = 118 new PagedListDescriptor<ListRoutesRequest, RouteList, Route>() { 119 @Override 120 public String emptyToken() { 121 return ""; 122 } 123 124 @Override 125 public ListRoutesRequest injectToken(ListRoutesRequest payload, String token) { 126 return ListRoutesRequest.newBuilder(payload).setPageToken(token).build(); 127 } 128 129 @Override 130 public ListRoutesRequest injectPageSize(ListRoutesRequest payload, int pageSize) { 131 return ListRoutesRequest.newBuilder(payload).setMaxResults(pageSize).build(); 132 } 133 134 @Override 135 public Integer extractPageSize(ListRoutesRequest payload) { 136 return payload.getMaxResults(); 137 } 138 139 @Override 140 public String extractNextToken(RouteList payload) { 141 return payload.getNextPageToken(); 142 } 143 144 @Override 145 public Iterable<Route> extractResources(RouteList payload) { 146 return payload.getItemsList() == null 147 ? ImmutableList.<Route>of() 148 : payload.getItemsList(); 149 } 150 }; 151 152 private static final PagedListResponseFactory<ListRoutesRequest, RouteList, ListPagedResponse> 153 LIST_PAGE_STR_FACT = 154 new PagedListResponseFactory<ListRoutesRequest, RouteList, ListPagedResponse>() { 155 @Override 156 public ApiFuture<ListPagedResponse> getFuturePagedResponse( 157 UnaryCallable<ListRoutesRequest, RouteList> callable, 158 ListRoutesRequest request, 159 ApiCallContext context, 160 ApiFuture<RouteList> futureResponse) { 161 PageContext<ListRoutesRequest, RouteList, Route> pageContext = 162 PageContext.create(callable, LIST_PAGE_STR_DESC, request, context); 163 return ListPagedResponse.createAsync(pageContext, futureResponse); 164 } 165 }; 166 167 /** Returns the object with the settings used for calls to delete. */ deleteSettings()168 public UnaryCallSettings<DeleteRouteRequest, Operation> deleteSettings() { 169 return deleteSettings; 170 } 171 172 /** Returns the object with the settings used for calls to delete. */ deleteOperationSettings()173 public OperationCallSettings<DeleteRouteRequest, Operation, Operation> deleteOperationSettings() { 174 return deleteOperationSettings; 175 } 176 177 /** Returns the object with the settings used for calls to get. */ getSettings()178 public UnaryCallSettings<GetRouteRequest, Route> getSettings() { 179 return getSettings; 180 } 181 182 /** Returns the object with the settings used for calls to insert. */ insertSettings()183 public UnaryCallSettings<InsertRouteRequest, Operation> insertSettings() { 184 return insertSettings; 185 } 186 187 /** Returns the object with the settings used for calls to insert. */ insertOperationSettings()188 public OperationCallSettings<InsertRouteRequest, Operation, Operation> insertOperationSettings() { 189 return insertOperationSettings; 190 } 191 192 /** Returns the object with the settings used for calls to list. */ listSettings()193 public PagedCallSettings<ListRoutesRequest, RouteList, ListPagedResponse> listSettings() { 194 return listSettings; 195 } 196 createStub()197 public RoutesStub createStub() throws IOException { 198 if (getTransportChannelProvider() 199 .getTransportName() 200 .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { 201 return HttpJsonRoutesStub.create(this); 202 } 203 throw new UnsupportedOperationException( 204 String.format( 205 "Transport not supported: %s", getTransportChannelProvider().getTransportName())); 206 } 207 208 /** Returns a builder for the default ExecutorProvider for this service. */ defaultExecutorProviderBuilder()209 public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { 210 return InstantiatingExecutorProvider.newBuilder(); 211 } 212 213 /** Returns the default service endpoint. */ getDefaultEndpoint()214 public static String getDefaultEndpoint() { 215 return "compute.googleapis.com:443"; 216 } 217 218 /** Returns the default mTLS service endpoint. */ getDefaultMtlsEndpoint()219 public static String getDefaultMtlsEndpoint() { 220 return "compute.mtls.googleapis.com:443"; 221 } 222 223 /** Returns the default service scopes. */ getDefaultServiceScopes()224 public static List<String> getDefaultServiceScopes() { 225 return DEFAULT_SERVICE_SCOPES; 226 } 227 228 /** Returns a builder for the default credentials for this service. */ defaultCredentialsProviderBuilder()229 public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { 230 return GoogleCredentialsProvider.newBuilder() 231 .setScopesToApply(DEFAULT_SERVICE_SCOPES) 232 .setUseJwtAccessWithScope(true); 233 } 234 235 /** Returns a builder for the default ChannelProvider for this service. */ 236 public static InstantiatingHttpJsonChannelProvider.Builder defaultHttpJsonTransportProviderBuilder()237 defaultHttpJsonTransportProviderBuilder() { 238 return InstantiatingHttpJsonChannelProvider.newBuilder(); 239 } 240 defaultTransportChannelProvider()241 public static TransportChannelProvider defaultTransportChannelProvider() { 242 return defaultHttpJsonTransportProviderBuilder().build(); 243 } 244 245 @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") defaultApiClientHeaderProviderBuilder()246 public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { 247 return ApiClientHeaderProvider.newBuilder() 248 .setGeneratedLibToken("gapic", GaxProperties.getLibraryVersion(RoutesStubSettings.class)) 249 .setTransportToken( 250 GaxHttpJsonProperties.getHttpJsonTokenName(), 251 GaxHttpJsonProperties.getHttpJsonVersion()); 252 } 253 254 /** Returns a new builder for this class. */ newBuilder()255 public static Builder newBuilder() { 256 return Builder.createDefault(); 257 } 258 259 /** Returns a new builder for this class. */ newBuilder(ClientContext clientContext)260 public static Builder newBuilder(ClientContext clientContext) { 261 return new Builder(clientContext); 262 } 263 264 /** Returns a builder containing all the values of this settings class. */ toBuilder()265 public Builder toBuilder() { 266 return new Builder(this); 267 } 268 RoutesStubSettings(Builder settingsBuilder)269 protected RoutesStubSettings(Builder settingsBuilder) throws IOException { 270 super(settingsBuilder); 271 272 deleteSettings = settingsBuilder.deleteSettings().build(); 273 deleteOperationSettings = settingsBuilder.deleteOperationSettings().build(); 274 getSettings = settingsBuilder.getSettings().build(); 275 insertSettings = settingsBuilder.insertSettings().build(); 276 insertOperationSettings = settingsBuilder.insertOperationSettings().build(); 277 listSettings = settingsBuilder.listSettings().build(); 278 } 279 280 /** Builder for RoutesStubSettings. */ 281 public static class Builder extends StubSettings.Builder<RoutesStubSettings, Builder> { 282 private final ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders; 283 private final UnaryCallSettings.Builder<DeleteRouteRequest, Operation> deleteSettings; 284 private final OperationCallSettings.Builder<DeleteRouteRequest, Operation, Operation> 285 deleteOperationSettings; 286 private final UnaryCallSettings.Builder<GetRouteRequest, Route> getSettings; 287 private final UnaryCallSettings.Builder<InsertRouteRequest, Operation> insertSettings; 288 private final OperationCallSettings.Builder<InsertRouteRequest, Operation, Operation> 289 insertOperationSettings; 290 private final PagedCallSettings.Builder<ListRoutesRequest, RouteList, ListPagedResponse> 291 listSettings; 292 private static final ImmutableMap<String, ImmutableSet<StatusCode.Code>> 293 RETRYABLE_CODE_DEFINITIONS; 294 295 static { 296 ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions = 297 ImmutableMap.builder(); 298 definitions.put( 299 "no_retry_1_codes", ImmutableSet.copyOf(Lists.<StatusCode.Code>newArrayList())); 300 definitions.put( 301 "retry_policy_0_codes", 302 ImmutableSet.copyOf( 303 Lists.<StatusCode.Code>newArrayList( 304 StatusCode.Code.DEADLINE_EXCEEDED, StatusCode.Code.UNAVAILABLE))); 305 RETRYABLE_CODE_DEFINITIONS = definitions.build(); 306 } 307 308 private static final ImmutableMap<String, RetrySettings> RETRY_PARAM_DEFINITIONS; 309 310 static { 311 ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder(); 312 RetrySettings settings = null; 313 settings = 314 RetrySettings.newBuilder() 315 .setInitialRpcTimeout(Duration.ofMillis(600000L)) 316 .setRpcTimeoutMultiplier(1.0) 317 .setMaxRpcTimeout(Duration.ofMillis(600000L)) 318 .setTotalTimeout(Duration.ofMillis(600000L)) 319 .build(); 320 definitions.put("no_retry_1_params", settings); 321 settings = 322 RetrySettings.newBuilder() 323 .setInitialRetryDelay(Duration.ofMillis(100L)) 324 .setRetryDelayMultiplier(1.3) 325 .setMaxRetryDelay(Duration.ofMillis(60000L)) 326 .setInitialRpcTimeout(Duration.ofMillis(600000L)) 327 .setRpcTimeoutMultiplier(1.0) 328 .setMaxRpcTimeout(Duration.ofMillis(600000L)) 329 .setTotalTimeout(Duration.ofMillis(600000L)) 330 .build(); 331 definitions.put("retry_policy_0_params", settings); 332 RETRY_PARAM_DEFINITIONS = definitions.build(); 333 } 334 Builder()335 protected Builder() { 336 this(((ClientContext) null)); 337 } 338 Builder(ClientContext clientContext)339 protected Builder(ClientContext clientContext) { 340 super(clientContext); 341 342 deleteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 343 deleteOperationSettings = OperationCallSettings.newBuilder(); 344 getSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 345 insertSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 346 insertOperationSettings = OperationCallSettings.newBuilder(); 347 listSettings = PagedCallSettings.newBuilder(LIST_PAGE_STR_FACT); 348 349 unaryMethodSettingsBuilders = 350 ImmutableList.<UnaryCallSettings.Builder<?, ?>>of( 351 deleteSettings, getSettings, insertSettings, listSettings); 352 initDefaults(this); 353 } 354 Builder(RoutesStubSettings settings)355 protected Builder(RoutesStubSettings settings) { 356 super(settings); 357 358 deleteSettings = settings.deleteSettings.toBuilder(); 359 deleteOperationSettings = settings.deleteOperationSettings.toBuilder(); 360 getSettings = settings.getSettings.toBuilder(); 361 insertSettings = settings.insertSettings.toBuilder(); 362 insertOperationSettings = settings.insertOperationSettings.toBuilder(); 363 listSettings = settings.listSettings.toBuilder(); 364 365 unaryMethodSettingsBuilders = 366 ImmutableList.<UnaryCallSettings.Builder<?, ?>>of( 367 deleteSettings, getSettings, insertSettings, listSettings); 368 } 369 createDefault()370 private static Builder createDefault() { 371 Builder builder = new Builder(((ClientContext) null)); 372 373 builder.setTransportChannelProvider(defaultTransportChannelProvider()); 374 builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); 375 builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); 376 builder.setEndpoint(getDefaultEndpoint()); 377 builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); 378 builder.setSwitchToMtlsEndpointAllowed(true); 379 380 return initDefaults(builder); 381 } 382 initDefaults(Builder builder)383 private static Builder initDefaults(Builder builder) { 384 builder 385 .deleteSettings() 386 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes")) 387 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params")); 388 389 builder 390 .getSettings() 391 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) 392 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); 393 394 builder 395 .insertSettings() 396 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes")) 397 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params")); 398 399 builder 400 .listSettings() 401 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) 402 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); 403 404 builder 405 .deleteOperationSettings() 406 .setInitialCallSettings( 407 UnaryCallSettings.<DeleteRouteRequest, OperationSnapshot>newUnaryCallSettingsBuilder() 408 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes")) 409 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params")) 410 .build()) 411 .setResponseTransformer( 412 ProtoOperationTransformers.ResponseTransformer.create(Operation.class)) 413 .setMetadataTransformer( 414 ProtoOperationTransformers.MetadataTransformer.create(Operation.class)) 415 .setPollingAlgorithm( 416 OperationTimedPollAlgorithm.create( 417 RetrySettings.newBuilder() 418 .setInitialRetryDelay(Duration.ofMillis(500L)) 419 .setRetryDelayMultiplier(1.5) 420 .setMaxRetryDelay(Duration.ofMillis(20000L)) 421 .setInitialRpcTimeout(Duration.ZERO) 422 .setRpcTimeoutMultiplier(1.0) 423 .setMaxRpcTimeout(Duration.ZERO) 424 .setTotalTimeout(Duration.ofMillis(600000L)) 425 .build())); 426 427 builder 428 .insertOperationSettings() 429 .setInitialCallSettings( 430 UnaryCallSettings.<InsertRouteRequest, OperationSnapshot>newUnaryCallSettingsBuilder() 431 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes")) 432 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params")) 433 .build()) 434 .setResponseTransformer( 435 ProtoOperationTransformers.ResponseTransformer.create(Operation.class)) 436 .setMetadataTransformer( 437 ProtoOperationTransformers.MetadataTransformer.create(Operation.class)) 438 .setPollingAlgorithm( 439 OperationTimedPollAlgorithm.create( 440 RetrySettings.newBuilder() 441 .setInitialRetryDelay(Duration.ofMillis(500L)) 442 .setRetryDelayMultiplier(1.5) 443 .setMaxRetryDelay(Duration.ofMillis(20000L)) 444 .setInitialRpcTimeout(Duration.ZERO) 445 .setRpcTimeoutMultiplier(1.0) 446 .setMaxRpcTimeout(Duration.ZERO) 447 .setTotalTimeout(Duration.ofMillis(600000L)) 448 .build())); 449 450 return builder; 451 } 452 453 /** 454 * Applies the given settings updater function to all of the unary API methods in this service. 455 * 456 * <p>Note: This method does not support applying settings to streaming methods. 457 */ applyToAllUnaryMethods( ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater)458 public Builder applyToAllUnaryMethods( 459 ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater) { 460 super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater); 461 return this; 462 } 463 unaryMethodSettingsBuilders()464 public ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders() { 465 return unaryMethodSettingsBuilders; 466 } 467 468 /** Returns the builder for the settings used for calls to delete. */ deleteSettings()469 public UnaryCallSettings.Builder<DeleteRouteRequest, Operation> deleteSettings() { 470 return deleteSettings; 471 } 472 473 /** Returns the builder for the settings used for calls to delete. */ 474 @BetaApi( 475 "The surface for use by generated code is not stable yet and may change in the future.") 476 public OperationCallSettings.Builder<DeleteRouteRequest, Operation, Operation> deleteOperationSettings()477 deleteOperationSettings() { 478 return deleteOperationSettings; 479 } 480 481 /** Returns the builder for the settings used for calls to get. */ getSettings()482 public UnaryCallSettings.Builder<GetRouteRequest, Route> getSettings() { 483 return getSettings; 484 } 485 486 /** Returns the builder for the settings used for calls to insert. */ insertSettings()487 public UnaryCallSettings.Builder<InsertRouteRequest, Operation> insertSettings() { 488 return insertSettings; 489 } 490 491 /** Returns the builder for the settings used for calls to insert. */ 492 @BetaApi( 493 "The surface for use by generated code is not stable yet and may change in the future.") 494 public OperationCallSettings.Builder<InsertRouteRequest, Operation, Operation> insertOperationSettings()495 insertOperationSettings() { 496 return insertOperationSettings; 497 } 498 499 /** Returns the builder for the settings used for calls to list. */ 500 public PagedCallSettings.Builder<ListRoutesRequest, RouteList, ListPagedResponse> listSettings()501 listSettings() { 502 return listSettings; 503 } 504 505 @Override build()506 public RoutesStubSettings build() throws IOException { 507 return new RoutesStubSettings(this); 508 } 509 } 510 } 511