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