• 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.v1.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.v1.LongRunningRecognizeMetadata;
43 import com.google.cloud.speech.v1.LongRunningRecognizeRequest;
44 import com.google.cloud.speech.v1.LongRunningRecognizeResponse;
45 import com.google.cloud.speech.v1.RecognizeRequest;
46 import com.google.cloud.speech.v1.RecognizeResponse;
47 import com.google.cloud.speech.v1.StreamingRecognizeRequest;
48 import com.google.cloud.speech.v1.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 @Generated("by gapic-generator-java")
96 public class SpeechStubSettings extends StubSettings<SpeechStubSettings> {
97   /** The default scopes of the service. */
98   private static final ImmutableList<String> DEFAULT_SERVICE_SCOPES =
99       ImmutableList.<String>builder().add("https://www.googleapis.com/auth/cloud-platform").build();
100 
101   private final UnaryCallSettings<RecognizeRequest, RecognizeResponse> recognizeSettings;
102   private final UnaryCallSettings<LongRunningRecognizeRequest, Operation>
103       longRunningRecognizeSettings;
104   private final OperationCallSettings<
105           LongRunningRecognizeRequest, LongRunningRecognizeResponse, LongRunningRecognizeMetadata>
106       longRunningRecognizeOperationSettings;
107   private final StreamingCallSettings<StreamingRecognizeRequest, StreamingRecognizeResponse>
108       streamingRecognizeSettings;
109 
110   /** Returns the object with the settings used for calls to recognize. */
recognizeSettings()111   public UnaryCallSettings<RecognizeRequest, RecognizeResponse> recognizeSettings() {
112     return recognizeSettings;
113   }
114 
115   /** Returns the object with the settings used for calls to longRunningRecognize. */
longRunningRecognizeSettings()116   public UnaryCallSettings<LongRunningRecognizeRequest, Operation> longRunningRecognizeSettings() {
117     return longRunningRecognizeSettings;
118   }
119 
120   /** Returns the object with the settings used for calls to longRunningRecognize. */
121   public OperationCallSettings<
122           LongRunningRecognizeRequest, LongRunningRecognizeResponse, LongRunningRecognizeMetadata>
longRunningRecognizeOperationSettings()123       longRunningRecognizeOperationSettings() {
124     return longRunningRecognizeOperationSettings;
125   }
126 
127   /** Returns the object with the settings used for calls to streamingRecognize. */
128   public StreamingCallSettings<StreamingRecognizeRequest, StreamingRecognizeResponse>
streamingRecognizeSettings()129       streamingRecognizeSettings() {
130     return streamingRecognizeSettings;
131   }
132 
createStub()133   public SpeechStub createStub() throws IOException {
134     if (getTransportChannelProvider()
135         .getTransportName()
136         .equals(GrpcTransportChannel.getGrpcTransportName())) {
137       return GrpcSpeechStub.create(this);
138     }
139     if (getTransportChannelProvider()
140         .getTransportName()
141         .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) {
142       return HttpJsonSpeechStub.create(this);
143     }
144     throw new UnsupportedOperationException(
145         String.format(
146             "Transport not supported: %s", getTransportChannelProvider().getTransportName()));
147   }
148 
149   /** Returns a builder for the default ExecutorProvider for this service. */
defaultExecutorProviderBuilder()150   public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() {
151     return InstantiatingExecutorProvider.newBuilder();
152   }
153 
154   /** Returns the default service endpoint. */
getDefaultEndpoint()155   public static String getDefaultEndpoint() {
156     return "speech.googleapis.com:443";
157   }
158 
159   /** Returns the default mTLS service endpoint. */
getDefaultMtlsEndpoint()160   public static String getDefaultMtlsEndpoint() {
161     return "speech.mtls.googleapis.com:443";
162   }
163 
164   /** Returns the default service scopes. */
getDefaultServiceScopes()165   public static List<String> getDefaultServiceScopes() {
166     return DEFAULT_SERVICE_SCOPES;
167   }
168 
169   /** Returns a builder for the default credentials for this service. */
defaultCredentialsProviderBuilder()170   public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
171     return GoogleCredentialsProvider.newBuilder()
172         .setScopesToApply(DEFAULT_SERVICE_SCOPES)
173         .setUseJwtAccessWithScope(true);
174   }
175 
176   /** Returns a builder for the default gRPC ChannelProvider for this service. */
defaultGrpcTransportProviderBuilder()177   public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
178     return InstantiatingGrpcChannelProvider.newBuilder()
179         .setMaxInboundMessageSize(Integer.MAX_VALUE);
180   }
181 
182   /** Returns a builder for the default REST ChannelProvider for this service. */
183   @BetaApi
184   public static InstantiatingHttpJsonChannelProvider.Builder
defaultHttpJsonTransportProviderBuilder()185       defaultHttpJsonTransportProviderBuilder() {
186     return InstantiatingHttpJsonChannelProvider.newBuilder();
187   }
188 
defaultTransportChannelProvider()189   public static TransportChannelProvider defaultTransportChannelProvider() {
190     return defaultGrpcTransportProviderBuilder().build();
191   }
192 
193   @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
defaultGrpcApiClientHeaderProviderBuilder()194   public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() {
195     return ApiClientHeaderProvider.newBuilder()
196         .setGeneratedLibToken("gapic", GaxProperties.getLibraryVersion(SpeechStubSettings.class))
197         .setTransportToken(
198             GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion());
199   }
200 
201   @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
defaultHttpJsonApiClientHeaderProviderBuilder()202   public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() {
203     return ApiClientHeaderProvider.newBuilder()
204         .setGeneratedLibToken("gapic", GaxProperties.getLibraryVersion(SpeechStubSettings.class))
205         .setTransportToken(
206             GaxHttpJsonProperties.getHttpJsonTokenName(),
207             GaxHttpJsonProperties.getHttpJsonVersion());
208   }
209 
defaultApiClientHeaderProviderBuilder()210   public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
211     return SpeechStubSettings.defaultGrpcApiClientHeaderProviderBuilder();
212   }
213 
214   /** Returns a new gRPC builder for this class. */
newBuilder()215   public static Builder newBuilder() {
216     return Builder.createDefault();
217   }
218 
219   /** Returns a new REST builder for this class. */
newHttpJsonBuilder()220   public static Builder newHttpJsonBuilder() {
221     return Builder.createHttpJsonDefault();
222   }
223 
224   /** Returns a new builder for this class. */
newBuilder(ClientContext clientContext)225   public static Builder newBuilder(ClientContext clientContext) {
226     return new Builder(clientContext);
227   }
228 
229   /** Returns a builder containing all the values of this settings class. */
toBuilder()230   public Builder toBuilder() {
231     return new Builder(this);
232   }
233 
SpeechStubSettings(Builder settingsBuilder)234   protected SpeechStubSettings(Builder settingsBuilder) throws IOException {
235     super(settingsBuilder);
236 
237     recognizeSettings = settingsBuilder.recognizeSettings().build();
238     longRunningRecognizeSettings = settingsBuilder.longRunningRecognizeSettings().build();
239     longRunningRecognizeOperationSettings =
240         settingsBuilder.longRunningRecognizeOperationSettings().build();
241     streamingRecognizeSettings = settingsBuilder.streamingRecognizeSettings().build();
242   }
243 
244   /** Builder for SpeechStubSettings. */
245   public static class Builder extends StubSettings.Builder<SpeechStubSettings, Builder> {
246     private final ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders;
247     private final UnaryCallSettings.Builder<RecognizeRequest, RecognizeResponse> recognizeSettings;
248     private final UnaryCallSettings.Builder<LongRunningRecognizeRequest, Operation>
249         longRunningRecognizeSettings;
250     private final OperationCallSettings.Builder<
251             LongRunningRecognizeRequest, LongRunningRecognizeResponse, LongRunningRecognizeMetadata>
252         longRunningRecognizeOperationSettings;
253     private final StreamingCallSettings.Builder<
254             StreamingRecognizeRequest, StreamingRecognizeResponse>
255         streamingRecognizeSettings;
256     private static final ImmutableMap<String, ImmutableSet<StatusCode.Code>>
257         RETRYABLE_CODE_DEFINITIONS;
258 
259     static {
260       ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions =
261           ImmutableMap.builder();
262       definitions.put(
263           "retry_policy_0_codes",
264           ImmutableSet.copyOf(
265               Lists.<StatusCode.Code>newArrayList(
266                   StatusCode.Code.UNAVAILABLE, StatusCode.Code.DEADLINE_EXCEEDED)));
267       definitions.put(
268           "no_retry_1_codes", ImmutableSet.copyOf(Lists.<StatusCode.Code>newArrayList()));
269       RETRYABLE_CODE_DEFINITIONS = definitions.build();
270     }
271 
272     private static final ImmutableMap<String, RetrySettings> RETRY_PARAM_DEFINITIONS;
273 
274     static {
275       ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder();
276       RetrySettings settings = null;
277       settings =
278           RetrySettings.newBuilder()
279               .setInitialRetryDelay(Duration.ofMillis(100L))
280               .setRetryDelayMultiplier(1.3)
281               .setMaxRetryDelay(Duration.ofMillis(60000L))
282               .setInitialRpcTimeout(Duration.ofMillis(5000000L))
283               .setRpcTimeoutMultiplier(1.0)
284               .setMaxRpcTimeout(Duration.ofMillis(5000000L))
285               .setTotalTimeout(Duration.ofMillis(5000000L))
286               .build();
287       definitions.put("retry_policy_0_params", settings);
288       settings =
289           RetrySettings.newBuilder()
290               .setInitialRpcTimeout(Duration.ofMillis(5000000L))
291               .setRpcTimeoutMultiplier(1.0)
292               .setMaxRpcTimeout(Duration.ofMillis(5000000L))
293               .setTotalTimeout(Duration.ofMillis(5000000L))
294               .build();
295       definitions.put("no_retry_1_params", settings);
296       RETRY_PARAM_DEFINITIONS = definitions.build();
297     }
298 
Builder()299     protected Builder() {
300       this(((ClientContext) null));
301     }
302 
Builder(ClientContext clientContext)303     protected Builder(ClientContext clientContext) {
304       super(clientContext);
305 
306       recognizeSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
307       longRunningRecognizeSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
308       longRunningRecognizeOperationSettings = OperationCallSettings.newBuilder();
309       streamingRecognizeSettings = StreamingCallSettings.newBuilder();
310 
311       unaryMethodSettingsBuilders =
312           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
313               recognizeSettings, longRunningRecognizeSettings);
314       initDefaults(this);
315     }
316 
Builder(SpeechStubSettings settings)317     protected Builder(SpeechStubSettings settings) {
318       super(settings);
319 
320       recognizeSettings = settings.recognizeSettings.toBuilder();
321       longRunningRecognizeSettings = settings.longRunningRecognizeSettings.toBuilder();
322       longRunningRecognizeOperationSettings =
323           settings.longRunningRecognizeOperationSettings.toBuilder();
324       streamingRecognizeSettings = settings.streamingRecognizeSettings.toBuilder();
325 
326       unaryMethodSettingsBuilders =
327           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
328               recognizeSettings, longRunningRecognizeSettings);
329     }
330 
createDefault()331     private static Builder createDefault() {
332       Builder builder = new Builder(((ClientContext) null));
333 
334       builder.setTransportChannelProvider(defaultTransportChannelProvider());
335       builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
336       builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build());
337       builder.setEndpoint(getDefaultEndpoint());
338       builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
339       builder.setSwitchToMtlsEndpointAllowed(true);
340 
341       return initDefaults(builder);
342     }
343 
createHttpJsonDefault()344     private static Builder createHttpJsonDefault() {
345       Builder builder = new Builder(((ClientContext) null));
346 
347       builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build());
348       builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
349       builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build());
350       builder.setEndpoint(getDefaultEndpoint());
351       builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
352       builder.setSwitchToMtlsEndpointAllowed(true);
353 
354       return initDefaults(builder);
355     }
356 
initDefaults(Builder builder)357     private static Builder initDefaults(Builder builder) {
358       builder
359           .recognizeSettings()
360           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
361           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
362 
363       builder
364           .longRunningRecognizeSettings()
365           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
366           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
367 
368       builder
369           .longRunningRecognizeOperationSettings()
370           .setInitialCallSettings(
371               UnaryCallSettings
372                   .<LongRunningRecognizeRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
373                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
374                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
375                   .build())
376           .setResponseTransformer(
377               ProtoOperationTransformers.ResponseTransformer.create(
378                   LongRunningRecognizeResponse.class))
379           .setMetadataTransformer(
380               ProtoOperationTransformers.MetadataTransformer.create(
381                   LongRunningRecognizeMetadata.class))
382           .setPollingAlgorithm(
383               OperationTimedPollAlgorithm.create(
384                   RetrySettings.newBuilder()
385                       .setInitialRetryDelay(Duration.ofMillis(5000L))
386                       .setRetryDelayMultiplier(1.5)
387                       .setMaxRetryDelay(Duration.ofMillis(45000L))
388                       .setInitialRpcTimeout(Duration.ZERO)
389                       .setRpcTimeoutMultiplier(1.0)
390                       .setMaxRpcTimeout(Duration.ZERO)
391                       .setTotalTimeout(Duration.ofMillis(300000L))
392                       .build()));
393 
394       return builder;
395     }
396 
397     /**
398      * Applies the given settings updater function to all of the unary API methods in this service.
399      *
400      * <p>Note: This method does not support applying settings to streaming methods.
401      */
applyToAllUnaryMethods( ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater)402     public Builder applyToAllUnaryMethods(
403         ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater) {
404       super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater);
405       return this;
406     }
407 
unaryMethodSettingsBuilders()408     public ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders() {
409       return unaryMethodSettingsBuilders;
410     }
411 
412     /** Returns the builder for the settings used for calls to recognize. */
recognizeSettings()413     public UnaryCallSettings.Builder<RecognizeRequest, RecognizeResponse> recognizeSettings() {
414       return recognizeSettings;
415     }
416 
417     /** Returns the builder for the settings used for calls to longRunningRecognize. */
418     public UnaryCallSettings.Builder<LongRunningRecognizeRequest, Operation>
longRunningRecognizeSettings()419         longRunningRecognizeSettings() {
420       return longRunningRecognizeSettings;
421     }
422 
423     /** Returns the builder for the settings used for calls to longRunningRecognize. */
424     @BetaApi(
425         "The surface for use by generated code is not stable yet and may change in the future.")
426     public OperationCallSettings.Builder<
427             LongRunningRecognizeRequest, LongRunningRecognizeResponse, LongRunningRecognizeMetadata>
longRunningRecognizeOperationSettings()428         longRunningRecognizeOperationSettings() {
429       return longRunningRecognizeOperationSettings;
430     }
431 
432     /** Returns the builder for the settings used for calls to streamingRecognize. */
433     public StreamingCallSettings.Builder<StreamingRecognizeRequest, StreamingRecognizeResponse>
streamingRecognizeSettings()434         streamingRecognizeSettings() {
435       return streamingRecognizeSettings;
436     }
437 
438     @Override
build()439     public SpeechStubSettings build() throws IOException {
440       return new SpeechStubSettings(this);
441     }
442   }
443 }
444