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