• 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.trace.v2.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.httpjson.GaxHttpJsonProperties;
28 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
29 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
30 import com.google.api.gax.retrying.RetrySettings;
31 import com.google.api.gax.rpc.ApiClientHeaderProvider;
32 import com.google.api.gax.rpc.ClientContext;
33 import com.google.api.gax.rpc.StatusCode;
34 import com.google.api.gax.rpc.StubSettings;
35 import com.google.api.gax.rpc.TransportChannelProvider;
36 import com.google.api.gax.rpc.UnaryCallSettings;
37 import com.google.common.collect.ImmutableList;
38 import com.google.common.collect.ImmutableMap;
39 import com.google.common.collect.ImmutableSet;
40 import com.google.common.collect.Lists;
41 import com.google.devtools.cloudtrace.v2.BatchWriteSpansRequest;
42 import com.google.devtools.cloudtrace.v2.Span;
43 import com.google.protobuf.Empty;
44 import java.io.IOException;
45 import java.util.List;
46 import javax.annotation.Generated;
47 import org.threeten.bp.Duration;
48 
49 // AUTO-GENERATED DOCUMENTATION AND CLASS.
50 /**
51  * Settings class to configure an instance of {@link TraceServiceStub}.
52  *
53  * <p>The default instance has everything set to sensible defaults:
54  *
55  * <ul>
56  *   <li>The default service address (cloudtrace.googleapis.com) and default port (443) are used.
57  *   <li>Credentials are acquired automatically through Application Default Credentials.
58  *   <li>Retries are configured for idempotent methods but not for non-idempotent methods.
59  * </ul>
60  *
61  * <p>The builder of this class is recursive, so contained classes are themselves builders. When
62  * build() is called, the tree of builders is called to create the complete settings object.
63  *
64  * <p>For example, to set the total timeout of batchWriteSpans to 30 seconds:
65  *
66  * <pre>{@code
67  * // This snippet has been automatically generated and should be regarded as a code template only.
68  * // It will require modifications to work:
69  * // - It may require correct/in-range values for request initialization.
70  * // - It may require specifying regional endpoints when creating the service client as shown in
71  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
72  * TraceServiceStubSettings.Builder traceServiceSettingsBuilder =
73  *     TraceServiceStubSettings.newBuilder();
74  * traceServiceSettingsBuilder
75  *     .batchWriteSpansSettings()
76  *     .setRetrySettings(
77  *         traceServiceSettingsBuilder
78  *             .batchWriteSpansSettings()
79  *             .getRetrySettings()
80  *             .toBuilder()
81  *             .setTotalTimeout(Duration.ofSeconds(30))
82  *             .build());
83  * TraceServiceStubSettings traceServiceSettings = traceServiceSettingsBuilder.build();
84  * }</pre>
85  */
86 @Generated("by gapic-generator-java")
87 public class TraceServiceStubSettings extends StubSettings<TraceServiceStubSettings> {
88   /** The default scopes of the service. */
89   private static final ImmutableList<String> DEFAULT_SERVICE_SCOPES =
90       ImmutableList.<String>builder()
91           .add("https://www.googleapis.com/auth/cloud-platform")
92           .add("https://www.googleapis.com/auth/trace.append")
93           .build();
94 
95   private final UnaryCallSettings<BatchWriteSpansRequest, Empty> batchWriteSpansSettings;
96   private final UnaryCallSettings<Span, Span> createSpanSettings;
97 
98   /** Returns the object with the settings used for calls to batchWriteSpans. */
batchWriteSpansSettings()99   public UnaryCallSettings<BatchWriteSpansRequest, Empty> batchWriteSpansSettings() {
100     return batchWriteSpansSettings;
101   }
102 
103   /** Returns the object with the settings used for calls to createSpan. */
createSpanSettings()104   public UnaryCallSettings<Span, Span> createSpanSettings() {
105     return createSpanSettings;
106   }
107 
createStub()108   public TraceServiceStub createStub() throws IOException {
109     if (getTransportChannelProvider()
110         .getTransportName()
111         .equals(GrpcTransportChannel.getGrpcTransportName())) {
112       return GrpcTraceServiceStub.create(this);
113     }
114     if (getTransportChannelProvider()
115         .getTransportName()
116         .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) {
117       return HttpJsonTraceServiceStub.create(this);
118     }
119     throw new UnsupportedOperationException(
120         String.format(
121             "Transport not supported: %s", getTransportChannelProvider().getTransportName()));
122   }
123 
124   /** Returns a builder for the default ExecutorProvider for this service. */
defaultExecutorProviderBuilder()125   public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() {
126     return InstantiatingExecutorProvider.newBuilder();
127   }
128 
129   /** Returns the default service endpoint. */
getDefaultEndpoint()130   public static String getDefaultEndpoint() {
131     return "cloudtrace.googleapis.com:443";
132   }
133 
134   /** Returns the default mTLS service endpoint. */
getDefaultMtlsEndpoint()135   public static String getDefaultMtlsEndpoint() {
136     return "cloudtrace.mtls.googleapis.com:443";
137   }
138 
139   /** Returns the default service scopes. */
getDefaultServiceScopes()140   public static List<String> getDefaultServiceScopes() {
141     return DEFAULT_SERVICE_SCOPES;
142   }
143 
144   /** Returns a builder for the default credentials for this service. */
defaultCredentialsProviderBuilder()145   public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
146     return GoogleCredentialsProvider.newBuilder()
147         .setScopesToApply(DEFAULT_SERVICE_SCOPES)
148         .setUseJwtAccessWithScope(true);
149   }
150 
151   /** Returns a builder for the default gRPC ChannelProvider for this service. */
defaultGrpcTransportProviderBuilder()152   public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
153     return InstantiatingGrpcChannelProvider.newBuilder()
154         .setMaxInboundMessageSize(Integer.MAX_VALUE);
155   }
156 
157   /** Returns a builder for the default REST ChannelProvider for this service. */
158   @BetaApi
159   public static InstantiatingHttpJsonChannelProvider.Builder
defaultHttpJsonTransportProviderBuilder()160       defaultHttpJsonTransportProviderBuilder() {
161     return InstantiatingHttpJsonChannelProvider.newBuilder();
162   }
163 
defaultTransportChannelProvider()164   public static TransportChannelProvider defaultTransportChannelProvider() {
165     return defaultGrpcTransportProviderBuilder().build();
166   }
167 
168   @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
defaultGrpcApiClientHeaderProviderBuilder()169   public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() {
170     return ApiClientHeaderProvider.newBuilder()
171         .setGeneratedLibToken(
172             "gapic", GaxProperties.getLibraryVersion(TraceServiceStubSettings.class))
173         .setTransportToken(
174             GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion());
175   }
176 
177   @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
defaultHttpJsonApiClientHeaderProviderBuilder()178   public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() {
179     return ApiClientHeaderProvider.newBuilder()
180         .setGeneratedLibToken(
181             "gapic", GaxProperties.getLibraryVersion(TraceServiceStubSettings.class))
182         .setTransportToken(
183             GaxHttpJsonProperties.getHttpJsonTokenName(),
184             GaxHttpJsonProperties.getHttpJsonVersion());
185   }
186 
defaultApiClientHeaderProviderBuilder()187   public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
188     return TraceServiceStubSettings.defaultGrpcApiClientHeaderProviderBuilder();
189   }
190 
191   /** Returns a new gRPC builder for this class. */
newBuilder()192   public static Builder newBuilder() {
193     return Builder.createDefault();
194   }
195 
196   /** Returns a new REST builder for this class. */
newHttpJsonBuilder()197   public static Builder newHttpJsonBuilder() {
198     return Builder.createHttpJsonDefault();
199   }
200 
201   /** Returns a new builder for this class. */
newBuilder(ClientContext clientContext)202   public static Builder newBuilder(ClientContext clientContext) {
203     return new Builder(clientContext);
204   }
205 
206   /** Returns a builder containing all the values of this settings class. */
toBuilder()207   public Builder toBuilder() {
208     return new Builder(this);
209   }
210 
TraceServiceStubSettings(Builder settingsBuilder)211   protected TraceServiceStubSettings(Builder settingsBuilder) throws IOException {
212     super(settingsBuilder);
213 
214     batchWriteSpansSettings = settingsBuilder.batchWriteSpansSettings().build();
215     createSpanSettings = settingsBuilder.createSpanSettings().build();
216   }
217 
218   /** Builder for TraceServiceStubSettings. */
219   public static class Builder extends StubSettings.Builder<TraceServiceStubSettings, Builder> {
220     private final ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders;
221     private final UnaryCallSettings.Builder<BatchWriteSpansRequest, Empty> batchWriteSpansSettings;
222     private final UnaryCallSettings.Builder<Span, Span> createSpanSettings;
223     private static final ImmutableMap<String, ImmutableSet<StatusCode.Code>>
224         RETRYABLE_CODE_DEFINITIONS;
225 
226     static {
227       ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions =
228           ImmutableMap.builder();
229       definitions.put(
230           "retry_policy_0_codes",
231           ImmutableSet.copyOf(
232               Lists.<StatusCode.Code>newArrayList(
233                   StatusCode.Code.UNAVAILABLE, StatusCode.Code.DEADLINE_EXCEEDED)));
234       definitions.put(
235           "retry_policy_1_codes",
236           ImmutableSet.copyOf(
237               Lists.<StatusCode.Code>newArrayList(
238                   StatusCode.Code.UNAVAILABLE, StatusCode.Code.DEADLINE_EXCEEDED)));
239       RETRYABLE_CODE_DEFINITIONS = definitions.build();
240     }
241 
242     private static final ImmutableMap<String, RetrySettings> RETRY_PARAM_DEFINITIONS;
243 
244     static {
245       ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder();
246       RetrySettings settings = null;
247       settings =
248           RetrySettings.newBuilder()
249               .setInitialRetryDelay(Duration.ofMillis(100L))
250               .setRetryDelayMultiplier(2.0)
251               .setMaxRetryDelay(Duration.ofMillis(30000L))
252               .setInitialRpcTimeout(Duration.ofMillis(120000L))
253               .setRpcTimeoutMultiplier(1.0)
254               .setMaxRpcTimeout(Duration.ofMillis(120000L))
255               .setTotalTimeout(Duration.ofMillis(120000L))
256               .build();
257       definitions.put("retry_policy_0_params", settings);
258       settings =
259           RetrySettings.newBuilder()
260               .setInitialRetryDelay(Duration.ofMillis(100L))
261               .setRetryDelayMultiplier(1.2)
262               .setMaxRetryDelay(Duration.ofMillis(1000L))
263               .setInitialRpcTimeout(Duration.ofMillis(120000L))
264               .setRpcTimeoutMultiplier(1.0)
265               .setMaxRpcTimeout(Duration.ofMillis(120000L))
266               .setTotalTimeout(Duration.ofMillis(120000L))
267               .build();
268       definitions.put("retry_policy_1_params", settings);
269       RETRY_PARAM_DEFINITIONS = definitions.build();
270     }
271 
Builder()272     protected Builder() {
273       this(((ClientContext) null));
274     }
275 
Builder(ClientContext clientContext)276     protected Builder(ClientContext clientContext) {
277       super(clientContext);
278 
279       batchWriteSpansSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
280       createSpanSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
281 
282       unaryMethodSettingsBuilders =
283           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
284               batchWriteSpansSettings, createSpanSettings);
285       initDefaults(this);
286     }
287 
Builder(TraceServiceStubSettings settings)288     protected Builder(TraceServiceStubSettings settings) {
289       super(settings);
290 
291       batchWriteSpansSettings = settings.batchWriteSpansSettings.toBuilder();
292       createSpanSettings = settings.createSpanSettings.toBuilder();
293 
294       unaryMethodSettingsBuilders =
295           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
296               batchWriteSpansSettings, createSpanSettings);
297     }
298 
createDefault()299     private static Builder createDefault() {
300       Builder builder = new Builder(((ClientContext) null));
301 
302       builder.setTransportChannelProvider(defaultTransportChannelProvider());
303       builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
304       builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build());
305       builder.setEndpoint(getDefaultEndpoint());
306       builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
307       builder.setSwitchToMtlsEndpointAllowed(true);
308 
309       return initDefaults(builder);
310     }
311 
createHttpJsonDefault()312     private static Builder createHttpJsonDefault() {
313       Builder builder = new Builder(((ClientContext) null));
314 
315       builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build());
316       builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
317       builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build());
318       builder.setEndpoint(getDefaultEndpoint());
319       builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
320       builder.setSwitchToMtlsEndpointAllowed(true);
321 
322       return initDefaults(builder);
323     }
324 
initDefaults(Builder builder)325     private static Builder initDefaults(Builder builder) {
326       builder
327           .batchWriteSpansSettings()
328           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
329           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
330 
331       builder
332           .createSpanSettings()
333           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes"))
334           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params"));
335 
336       return builder;
337     }
338 
339     /**
340      * Applies the given settings updater function to all of the unary API methods in this service.
341      *
342      * <p>Note: This method does not support applying settings to streaming methods.
343      */
applyToAllUnaryMethods( ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater)344     public Builder applyToAllUnaryMethods(
345         ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater) {
346       super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater);
347       return this;
348     }
349 
unaryMethodSettingsBuilders()350     public ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders() {
351       return unaryMethodSettingsBuilders;
352     }
353 
354     /** Returns the builder for the settings used for calls to batchWriteSpans. */
batchWriteSpansSettings()355     public UnaryCallSettings.Builder<BatchWriteSpansRequest, Empty> batchWriteSpansSettings() {
356       return batchWriteSpansSettings;
357     }
358 
359     /** Returns the builder for the settings used for calls to createSpan. */
createSpanSettings()360     public UnaryCallSettings.Builder<Span, Span> createSpanSettings() {
361       return createSpanSettings;
362     }
363 
364     @Override
build()365     public TraceServiceStubSettings build() throws IOException {
366       return new TraceServiceStubSettings(this);
367     }
368   }
369 }
370