• 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 com.google.api.HttpBody;
20 import com.google.api.core.ApiFunction;
21 import com.google.api.core.BetaApi;
22 import com.google.api.gax.core.GaxProperties;
23 import com.google.api.gax.core.GoogleCredentialsProvider;
24 import com.google.api.gax.core.InstantiatingExecutorProvider;
25 import com.google.api.gax.grpc.GaxGrpcProperties;
26 import com.google.api.gax.grpc.GrpcTransportChannel;
27 import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
28 import com.google.api.gax.grpc.ProtoOperationTransformers;
29 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
30 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
31 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
32 import com.google.api.gax.longrunning.OperationSnapshot;
33 import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
34 import com.google.api.gax.retrying.RetrySettings;
35 import com.google.api.gax.rpc.ApiClientHeaderProvider;
36 import com.google.api.gax.rpc.ClientContext;
37 import com.google.api.gax.rpc.OperationCallSettings;
38 import com.google.api.gax.rpc.StatusCode;
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.retail.v2.CollectUserEventRequest;
43 import com.google.cloud.retail.v2.ImportMetadata;
44 import com.google.cloud.retail.v2.ImportUserEventsRequest;
45 import com.google.cloud.retail.v2.ImportUserEventsResponse;
46 import com.google.cloud.retail.v2.PurgeMetadata;
47 import com.google.cloud.retail.v2.PurgeUserEventsRequest;
48 import com.google.cloud.retail.v2.PurgeUserEventsResponse;
49 import com.google.cloud.retail.v2.RejoinUserEventsMetadata;
50 import com.google.cloud.retail.v2.RejoinUserEventsRequest;
51 import com.google.cloud.retail.v2.RejoinUserEventsResponse;
52 import com.google.cloud.retail.v2.UserEvent;
53 import com.google.cloud.retail.v2.WriteUserEventRequest;
54 import com.google.common.collect.ImmutableList;
55 import com.google.common.collect.ImmutableMap;
56 import com.google.common.collect.ImmutableSet;
57 import com.google.common.collect.Lists;
58 import com.google.longrunning.Operation;
59 import java.io.IOException;
60 import java.util.List;
61 import javax.annotation.Generated;
62 import org.threeten.bp.Duration;
63 
64 // AUTO-GENERATED DOCUMENTATION AND CLASS.
65 /**
66  * Settings class to configure an instance of {@link UserEventServiceStub}.
67  *
68  * <p>The default instance has everything set to sensible defaults:
69  *
70  * <ul>
71  *   <li>The default service address (retail.googleapis.com) and default port (443) are used.
72  *   <li>Credentials are acquired automatically through Application Default Credentials.
73  *   <li>Retries are configured for idempotent methods but not for non-idempotent methods.
74  * </ul>
75  *
76  * <p>The builder of this class is recursive, so contained classes are themselves builders. When
77  * build() is called, the tree of builders is called to create the complete settings object.
78  *
79  * <p>For example, to set the total timeout of writeUserEvent to 30 seconds:
80  *
81  * <pre>{@code
82  * // This snippet has been automatically generated and should be regarded as a code template only.
83  * // It will require modifications to work:
84  * // - It may require correct/in-range values for request initialization.
85  * // - It may require specifying regional endpoints when creating the service client as shown in
86  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
87  * UserEventServiceStubSettings.Builder userEventServiceSettingsBuilder =
88  *     UserEventServiceStubSettings.newBuilder();
89  * userEventServiceSettingsBuilder
90  *     .writeUserEventSettings()
91  *     .setRetrySettings(
92  *         userEventServiceSettingsBuilder
93  *             .writeUserEventSettings()
94  *             .getRetrySettings()
95  *             .toBuilder()
96  *             .setTotalTimeout(Duration.ofSeconds(30))
97  *             .build());
98  * UserEventServiceStubSettings userEventServiceSettings = userEventServiceSettingsBuilder.build();
99  * }</pre>
100  */
101 @Generated("by gapic-generator-java")
102 public class UserEventServiceStubSettings extends StubSettings<UserEventServiceStubSettings> {
103   /** The default scopes of the service. */
104   private static final ImmutableList<String> DEFAULT_SERVICE_SCOPES =
105       ImmutableList.<String>builder().add("https://www.googleapis.com/auth/cloud-platform").build();
106 
107   private final UnaryCallSettings<WriteUserEventRequest, UserEvent> writeUserEventSettings;
108   private final UnaryCallSettings<CollectUserEventRequest, HttpBody> collectUserEventSettings;
109   private final UnaryCallSettings<PurgeUserEventsRequest, Operation> purgeUserEventsSettings;
110   private final OperationCallSettings<
111           PurgeUserEventsRequest, PurgeUserEventsResponse, PurgeMetadata>
112       purgeUserEventsOperationSettings;
113   private final UnaryCallSettings<ImportUserEventsRequest, Operation> importUserEventsSettings;
114   private final OperationCallSettings<
115           ImportUserEventsRequest, ImportUserEventsResponse, ImportMetadata>
116       importUserEventsOperationSettings;
117   private final UnaryCallSettings<RejoinUserEventsRequest, Operation> rejoinUserEventsSettings;
118   private final OperationCallSettings<
119           RejoinUserEventsRequest, RejoinUserEventsResponse, RejoinUserEventsMetadata>
120       rejoinUserEventsOperationSettings;
121 
122   /** Returns the object with the settings used for calls to writeUserEvent. */
writeUserEventSettings()123   public UnaryCallSettings<WriteUserEventRequest, UserEvent> writeUserEventSettings() {
124     return writeUserEventSettings;
125   }
126 
127   /** Returns the object with the settings used for calls to collectUserEvent. */
collectUserEventSettings()128   public UnaryCallSettings<CollectUserEventRequest, HttpBody> collectUserEventSettings() {
129     return collectUserEventSettings;
130   }
131 
132   /** Returns the object with the settings used for calls to purgeUserEvents. */
purgeUserEventsSettings()133   public UnaryCallSettings<PurgeUserEventsRequest, Operation> purgeUserEventsSettings() {
134     return purgeUserEventsSettings;
135   }
136 
137   /** Returns the object with the settings used for calls to purgeUserEvents. */
138   public OperationCallSettings<PurgeUserEventsRequest, PurgeUserEventsResponse, PurgeMetadata>
purgeUserEventsOperationSettings()139       purgeUserEventsOperationSettings() {
140     return purgeUserEventsOperationSettings;
141   }
142 
143   /** Returns the object with the settings used for calls to importUserEvents. */
importUserEventsSettings()144   public UnaryCallSettings<ImportUserEventsRequest, Operation> importUserEventsSettings() {
145     return importUserEventsSettings;
146   }
147 
148   /** Returns the object with the settings used for calls to importUserEvents. */
149   public OperationCallSettings<ImportUserEventsRequest, ImportUserEventsResponse, ImportMetadata>
importUserEventsOperationSettings()150       importUserEventsOperationSettings() {
151     return importUserEventsOperationSettings;
152   }
153 
154   /** Returns the object with the settings used for calls to rejoinUserEvents. */
rejoinUserEventsSettings()155   public UnaryCallSettings<RejoinUserEventsRequest, Operation> rejoinUserEventsSettings() {
156     return rejoinUserEventsSettings;
157   }
158 
159   /** Returns the object with the settings used for calls to rejoinUserEvents. */
160   public OperationCallSettings<
161           RejoinUserEventsRequest, RejoinUserEventsResponse, RejoinUserEventsMetadata>
rejoinUserEventsOperationSettings()162       rejoinUserEventsOperationSettings() {
163     return rejoinUserEventsOperationSettings;
164   }
165 
createStub()166   public UserEventServiceStub createStub() throws IOException {
167     if (getTransportChannelProvider()
168         .getTransportName()
169         .equals(GrpcTransportChannel.getGrpcTransportName())) {
170       return GrpcUserEventServiceStub.create(this);
171     }
172     if (getTransportChannelProvider()
173         .getTransportName()
174         .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) {
175       return HttpJsonUserEventServiceStub.create(this);
176     }
177     throw new UnsupportedOperationException(
178         String.format(
179             "Transport not supported: %s", getTransportChannelProvider().getTransportName()));
180   }
181 
182   /** Returns a builder for the default ExecutorProvider for this service. */
defaultExecutorProviderBuilder()183   public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() {
184     return InstantiatingExecutorProvider.newBuilder();
185   }
186 
187   /** Returns the default service endpoint. */
getDefaultEndpoint()188   public static String getDefaultEndpoint() {
189     return "retail.googleapis.com:443";
190   }
191 
192   /** Returns the default mTLS service endpoint. */
getDefaultMtlsEndpoint()193   public static String getDefaultMtlsEndpoint() {
194     return "retail.mtls.googleapis.com:443";
195   }
196 
197   /** Returns the default service scopes. */
getDefaultServiceScopes()198   public static List<String> getDefaultServiceScopes() {
199     return DEFAULT_SERVICE_SCOPES;
200   }
201 
202   /** Returns a builder for the default credentials for this service. */
defaultCredentialsProviderBuilder()203   public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
204     return GoogleCredentialsProvider.newBuilder()
205         .setScopesToApply(DEFAULT_SERVICE_SCOPES)
206         .setUseJwtAccessWithScope(true);
207   }
208 
209   /** Returns a builder for the default gRPC ChannelProvider for this service. */
defaultGrpcTransportProviderBuilder()210   public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
211     return InstantiatingGrpcChannelProvider.newBuilder()
212         .setMaxInboundMessageSize(Integer.MAX_VALUE);
213   }
214 
215   /** Returns a builder for the default REST ChannelProvider for this service. */
216   @BetaApi
217   public static InstantiatingHttpJsonChannelProvider.Builder
defaultHttpJsonTransportProviderBuilder()218       defaultHttpJsonTransportProviderBuilder() {
219     return InstantiatingHttpJsonChannelProvider.newBuilder();
220   }
221 
defaultTransportChannelProvider()222   public static TransportChannelProvider defaultTransportChannelProvider() {
223     return defaultGrpcTransportProviderBuilder().build();
224   }
225 
226   @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
defaultGrpcApiClientHeaderProviderBuilder()227   public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() {
228     return ApiClientHeaderProvider.newBuilder()
229         .setGeneratedLibToken(
230             "gapic", GaxProperties.getLibraryVersion(UserEventServiceStubSettings.class))
231         .setTransportToken(
232             GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion());
233   }
234 
235   @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
defaultHttpJsonApiClientHeaderProviderBuilder()236   public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() {
237     return ApiClientHeaderProvider.newBuilder()
238         .setGeneratedLibToken(
239             "gapic", GaxProperties.getLibraryVersion(UserEventServiceStubSettings.class))
240         .setTransportToken(
241             GaxHttpJsonProperties.getHttpJsonTokenName(),
242             GaxHttpJsonProperties.getHttpJsonVersion());
243   }
244 
defaultApiClientHeaderProviderBuilder()245   public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
246     return UserEventServiceStubSettings.defaultGrpcApiClientHeaderProviderBuilder();
247   }
248 
249   /** Returns a new gRPC builder for this class. */
newBuilder()250   public static Builder newBuilder() {
251     return Builder.createDefault();
252   }
253 
254   /** Returns a new REST builder for this class. */
newHttpJsonBuilder()255   public static Builder newHttpJsonBuilder() {
256     return Builder.createHttpJsonDefault();
257   }
258 
259   /** Returns a new builder for this class. */
newBuilder(ClientContext clientContext)260   public static Builder newBuilder(ClientContext clientContext) {
261     return new Builder(clientContext);
262   }
263 
264   /** Returns a builder containing all the values of this settings class. */
toBuilder()265   public Builder toBuilder() {
266     return new Builder(this);
267   }
268 
UserEventServiceStubSettings(Builder settingsBuilder)269   protected UserEventServiceStubSettings(Builder settingsBuilder) throws IOException {
270     super(settingsBuilder);
271 
272     writeUserEventSettings = settingsBuilder.writeUserEventSettings().build();
273     collectUserEventSettings = settingsBuilder.collectUserEventSettings().build();
274     purgeUserEventsSettings = settingsBuilder.purgeUserEventsSettings().build();
275     purgeUserEventsOperationSettings = settingsBuilder.purgeUserEventsOperationSettings().build();
276     importUserEventsSettings = settingsBuilder.importUserEventsSettings().build();
277     importUserEventsOperationSettings = settingsBuilder.importUserEventsOperationSettings().build();
278     rejoinUserEventsSettings = settingsBuilder.rejoinUserEventsSettings().build();
279     rejoinUserEventsOperationSettings = settingsBuilder.rejoinUserEventsOperationSettings().build();
280   }
281 
282   /** Builder for UserEventServiceStubSettings. */
283   public static class Builder extends StubSettings.Builder<UserEventServiceStubSettings, Builder> {
284     private final ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders;
285     private final UnaryCallSettings.Builder<WriteUserEventRequest, UserEvent>
286         writeUserEventSettings;
287     private final UnaryCallSettings.Builder<CollectUserEventRequest, HttpBody>
288         collectUserEventSettings;
289     private final UnaryCallSettings.Builder<PurgeUserEventsRequest, Operation>
290         purgeUserEventsSettings;
291     private final OperationCallSettings.Builder<
292             PurgeUserEventsRequest, PurgeUserEventsResponse, PurgeMetadata>
293         purgeUserEventsOperationSettings;
294     private final UnaryCallSettings.Builder<ImportUserEventsRequest, Operation>
295         importUserEventsSettings;
296     private final OperationCallSettings.Builder<
297             ImportUserEventsRequest, ImportUserEventsResponse, ImportMetadata>
298         importUserEventsOperationSettings;
299     private final UnaryCallSettings.Builder<RejoinUserEventsRequest, Operation>
300         rejoinUserEventsSettings;
301     private final OperationCallSettings.Builder<
302             RejoinUserEventsRequest, RejoinUserEventsResponse, RejoinUserEventsMetadata>
303         rejoinUserEventsOperationSettings;
304     private static final ImmutableMap<String, ImmutableSet<StatusCode.Code>>
305         RETRYABLE_CODE_DEFINITIONS;
306 
307     static {
308       ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions =
309           ImmutableMap.builder();
310       definitions.put(
311           "retry_policy_0_codes",
312           ImmutableSet.copyOf(
313               Lists.<StatusCode.Code>newArrayList(
314                   StatusCode.Code.UNAVAILABLE, StatusCode.Code.DEADLINE_EXCEEDED)));
315       definitions.put(
316           "retry_policy_1_codes",
317           ImmutableSet.copyOf(
318               Lists.<StatusCode.Code>newArrayList(
319                   StatusCode.Code.UNAVAILABLE, StatusCode.Code.DEADLINE_EXCEEDED)));
320       definitions.put(
321           "retry_policy_4_codes",
322           ImmutableSet.copyOf(
323               Lists.<StatusCode.Code>newArrayList(
324                   StatusCode.Code.UNAVAILABLE, StatusCode.Code.DEADLINE_EXCEEDED)));
325       RETRYABLE_CODE_DEFINITIONS = definitions.build();
326     }
327 
328     private static final ImmutableMap<String, RetrySettings> RETRY_PARAM_DEFINITIONS;
329 
330     static {
331       ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder();
332       RetrySettings settings = null;
333       settings =
334           RetrySettings.newBuilder()
335               .setInitialRetryDelay(Duration.ofMillis(100L))
336               .setRetryDelayMultiplier(1.3)
337               .setMaxRetryDelay(Duration.ofMillis(5000L))
338               .setInitialRpcTimeout(Duration.ofMillis(5000L))
339               .setRpcTimeoutMultiplier(1.0)
340               .setMaxRpcTimeout(Duration.ofMillis(5000L))
341               .setTotalTimeout(Duration.ofMillis(5000L))
342               .build();
343       definitions.put("retry_policy_0_params", settings);
344       settings =
345           RetrySettings.newBuilder()
346               .setInitialRetryDelay(Duration.ofMillis(100L))
347               .setRetryDelayMultiplier(1.3)
348               .setMaxRetryDelay(Duration.ofMillis(30000L))
349               .setInitialRpcTimeout(Duration.ofMillis(30000L))
350               .setRpcTimeoutMultiplier(1.0)
351               .setMaxRpcTimeout(Duration.ofMillis(30000L))
352               .setTotalTimeout(Duration.ofMillis(30000L))
353               .build();
354       definitions.put("retry_policy_1_params", settings);
355       settings =
356           RetrySettings.newBuilder()
357               .setInitialRetryDelay(Duration.ofMillis(100L))
358               .setRetryDelayMultiplier(1.3)
359               .setMaxRetryDelay(Duration.ofMillis(300000L))
360               .setInitialRpcTimeout(Duration.ofMillis(600000L))
361               .setRpcTimeoutMultiplier(1.0)
362               .setMaxRpcTimeout(Duration.ofMillis(600000L))
363               .setTotalTimeout(Duration.ofMillis(600000L))
364               .build();
365       definitions.put("retry_policy_4_params", settings);
366       RETRY_PARAM_DEFINITIONS = definitions.build();
367     }
368 
Builder()369     protected Builder() {
370       this(((ClientContext) null));
371     }
372 
Builder(ClientContext clientContext)373     protected Builder(ClientContext clientContext) {
374       super(clientContext);
375 
376       writeUserEventSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
377       collectUserEventSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
378       purgeUserEventsSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
379       purgeUserEventsOperationSettings = OperationCallSettings.newBuilder();
380       importUserEventsSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
381       importUserEventsOperationSettings = OperationCallSettings.newBuilder();
382       rejoinUserEventsSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
383       rejoinUserEventsOperationSettings = OperationCallSettings.newBuilder();
384 
385       unaryMethodSettingsBuilders =
386           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
387               writeUserEventSettings,
388               collectUserEventSettings,
389               purgeUserEventsSettings,
390               importUserEventsSettings,
391               rejoinUserEventsSettings);
392       initDefaults(this);
393     }
394 
Builder(UserEventServiceStubSettings settings)395     protected Builder(UserEventServiceStubSettings settings) {
396       super(settings);
397 
398       writeUserEventSettings = settings.writeUserEventSettings.toBuilder();
399       collectUserEventSettings = settings.collectUserEventSettings.toBuilder();
400       purgeUserEventsSettings = settings.purgeUserEventsSettings.toBuilder();
401       purgeUserEventsOperationSettings = settings.purgeUserEventsOperationSettings.toBuilder();
402       importUserEventsSettings = settings.importUserEventsSettings.toBuilder();
403       importUserEventsOperationSettings = settings.importUserEventsOperationSettings.toBuilder();
404       rejoinUserEventsSettings = settings.rejoinUserEventsSettings.toBuilder();
405       rejoinUserEventsOperationSettings = settings.rejoinUserEventsOperationSettings.toBuilder();
406 
407       unaryMethodSettingsBuilders =
408           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
409               writeUserEventSettings,
410               collectUserEventSettings,
411               purgeUserEventsSettings,
412               importUserEventsSettings,
413               rejoinUserEventsSettings);
414     }
415 
createDefault()416     private static Builder createDefault() {
417       Builder builder = new Builder(((ClientContext) null));
418 
419       builder.setTransportChannelProvider(defaultTransportChannelProvider());
420       builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
421       builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build());
422       builder.setEndpoint(getDefaultEndpoint());
423       builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
424       builder.setSwitchToMtlsEndpointAllowed(true);
425 
426       return initDefaults(builder);
427     }
428 
createHttpJsonDefault()429     private static Builder createHttpJsonDefault() {
430       Builder builder = new Builder(((ClientContext) null));
431 
432       builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build());
433       builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
434       builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build());
435       builder.setEndpoint(getDefaultEndpoint());
436       builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
437       builder.setSwitchToMtlsEndpointAllowed(true);
438 
439       return initDefaults(builder);
440     }
441 
initDefaults(Builder builder)442     private static Builder initDefaults(Builder builder) {
443       builder
444           .writeUserEventSettings()
445           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
446           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
447 
448       builder
449           .collectUserEventSettings()
450           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
451           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
452 
453       builder
454           .purgeUserEventsSettings()
455           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes"))
456           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params"));
457 
458       builder
459           .importUserEventsSettings()
460           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_4_codes"))
461           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_4_params"));
462 
463       builder
464           .rejoinUserEventsSettings()
465           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
466           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
467 
468       builder
469           .purgeUserEventsOperationSettings()
470           .setInitialCallSettings(
471               UnaryCallSettings
472                   .<PurgeUserEventsRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
473                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes"))
474                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params"))
475                   .build())
476           .setResponseTransformer(
477               ProtoOperationTransformers.ResponseTransformer.create(PurgeUserEventsResponse.class))
478           .setMetadataTransformer(
479               ProtoOperationTransformers.MetadataTransformer.create(PurgeMetadata.class))
480           .setPollingAlgorithm(
481               OperationTimedPollAlgorithm.create(
482                   RetrySettings.newBuilder()
483                       .setInitialRetryDelay(Duration.ofMillis(5000L))
484                       .setRetryDelayMultiplier(1.5)
485                       .setMaxRetryDelay(Duration.ofMillis(45000L))
486                       .setInitialRpcTimeout(Duration.ZERO)
487                       .setRpcTimeoutMultiplier(1.0)
488                       .setMaxRpcTimeout(Duration.ZERO)
489                       .setTotalTimeout(Duration.ofMillis(300000L))
490                       .build()));
491 
492       builder
493           .importUserEventsOperationSettings()
494           .setInitialCallSettings(
495               UnaryCallSettings
496                   .<ImportUserEventsRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
497                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_4_codes"))
498                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_4_params"))
499                   .build())
500           .setResponseTransformer(
501               ProtoOperationTransformers.ResponseTransformer.create(ImportUserEventsResponse.class))
502           .setMetadataTransformer(
503               ProtoOperationTransformers.MetadataTransformer.create(ImportMetadata.class))
504           .setPollingAlgorithm(
505               OperationTimedPollAlgorithm.create(
506                   RetrySettings.newBuilder()
507                       .setInitialRetryDelay(Duration.ofMillis(5000L))
508                       .setRetryDelayMultiplier(1.5)
509                       .setMaxRetryDelay(Duration.ofMillis(45000L))
510                       .setInitialRpcTimeout(Duration.ZERO)
511                       .setRpcTimeoutMultiplier(1.0)
512                       .setMaxRpcTimeout(Duration.ZERO)
513                       .setTotalTimeout(Duration.ofMillis(300000L))
514                       .build()));
515 
516       builder
517           .rejoinUserEventsOperationSettings()
518           .setInitialCallSettings(
519               UnaryCallSettings
520                   .<RejoinUserEventsRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
521                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
522                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"))
523                   .build())
524           .setResponseTransformer(
525               ProtoOperationTransformers.ResponseTransformer.create(RejoinUserEventsResponse.class))
526           .setMetadataTransformer(
527               ProtoOperationTransformers.MetadataTransformer.create(RejoinUserEventsMetadata.class))
528           .setPollingAlgorithm(
529               OperationTimedPollAlgorithm.create(
530                   RetrySettings.newBuilder()
531                       .setInitialRetryDelay(Duration.ofMillis(5000L))
532                       .setRetryDelayMultiplier(1.5)
533                       .setMaxRetryDelay(Duration.ofMillis(45000L))
534                       .setInitialRpcTimeout(Duration.ZERO)
535                       .setRpcTimeoutMultiplier(1.0)
536                       .setMaxRpcTimeout(Duration.ZERO)
537                       .setTotalTimeout(Duration.ofMillis(300000L))
538                       .build()));
539 
540       return builder;
541     }
542 
543     /**
544      * Applies the given settings updater function to all of the unary API methods in this service.
545      *
546      * <p>Note: This method does not support applying settings to streaming methods.
547      */
applyToAllUnaryMethods( ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater)548     public Builder applyToAllUnaryMethods(
549         ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater) {
550       super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater);
551       return this;
552     }
553 
unaryMethodSettingsBuilders()554     public ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders() {
555       return unaryMethodSettingsBuilders;
556     }
557 
558     /** Returns the builder for the settings used for calls to writeUserEvent. */
writeUserEventSettings()559     public UnaryCallSettings.Builder<WriteUserEventRequest, UserEvent> writeUserEventSettings() {
560       return writeUserEventSettings;
561     }
562 
563     /** Returns the builder for the settings used for calls to collectUserEvent. */
collectUserEventSettings()564     public UnaryCallSettings.Builder<CollectUserEventRequest, HttpBody> collectUserEventSettings() {
565       return collectUserEventSettings;
566     }
567 
568     /** Returns the builder for the settings used for calls to purgeUserEvents. */
purgeUserEventsSettings()569     public UnaryCallSettings.Builder<PurgeUserEventsRequest, Operation> purgeUserEventsSettings() {
570       return purgeUserEventsSettings;
571     }
572 
573     /** Returns the builder for the settings used for calls to purgeUserEvents. */
574     @BetaApi(
575         "The surface for use by generated code is not stable yet and may change in the future.")
576     public OperationCallSettings.Builder<
577             PurgeUserEventsRequest, PurgeUserEventsResponse, PurgeMetadata>
purgeUserEventsOperationSettings()578         purgeUserEventsOperationSettings() {
579       return purgeUserEventsOperationSettings;
580     }
581 
582     /** Returns the builder for the settings used for calls to importUserEvents. */
583     public UnaryCallSettings.Builder<ImportUserEventsRequest, Operation>
importUserEventsSettings()584         importUserEventsSettings() {
585       return importUserEventsSettings;
586     }
587 
588     /** Returns the builder for the settings used for calls to importUserEvents. */
589     @BetaApi(
590         "The surface for use by generated code is not stable yet and may change in the future.")
591     public OperationCallSettings.Builder<
592             ImportUserEventsRequest, ImportUserEventsResponse, ImportMetadata>
importUserEventsOperationSettings()593         importUserEventsOperationSettings() {
594       return importUserEventsOperationSettings;
595     }
596 
597     /** Returns the builder for the settings used for calls to rejoinUserEvents. */
598     public UnaryCallSettings.Builder<RejoinUserEventsRequest, Operation>
rejoinUserEventsSettings()599         rejoinUserEventsSettings() {
600       return rejoinUserEventsSettings;
601     }
602 
603     /** Returns the builder for the settings used for calls to rejoinUserEvents. */
604     @BetaApi(
605         "The surface for use by generated code is not stable yet and may change in the future.")
606     public OperationCallSettings.Builder<
607             RejoinUserEventsRequest, RejoinUserEventsResponse, RejoinUserEventsMetadata>
rejoinUserEventsOperationSettings()608         rejoinUserEventsOperationSettings() {
609       return rejoinUserEventsOperationSettings;
610     }
611 
612     @Override
build()613     public UserEventServiceStubSettings build() throws IOException {
614       return new UserEventServiceStubSettings(this);
615     }
616   }
617 }
618