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