• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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