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