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