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