• 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;
18 
19 import com.google.api.core.ApiFuture;
20 import com.google.api.core.ApiFutures;
21 import com.google.api.gax.core.BackgroundResource;
22 import com.google.api.gax.paging.AbstractFixedSizeCollection;
23 import com.google.api.gax.paging.AbstractPage;
24 import com.google.api.gax.paging.AbstractPagedListResponse;
25 import com.google.api.gax.rpc.PageContext;
26 import com.google.api.gax.rpc.UnaryCallable;
27 import com.google.cloud.trace.v1.stub.TraceServiceStub;
28 import com.google.cloud.trace.v1.stub.TraceServiceStubSettings;
29 import com.google.common.util.concurrent.MoreExecutors;
30 import com.google.devtools.cloudtrace.v1.GetTraceRequest;
31 import com.google.devtools.cloudtrace.v1.ListTracesRequest;
32 import com.google.devtools.cloudtrace.v1.ListTracesResponse;
33 import com.google.devtools.cloudtrace.v1.PatchTracesRequest;
34 import com.google.devtools.cloudtrace.v1.Trace;
35 import com.google.devtools.cloudtrace.v1.Traces;
36 import com.google.protobuf.Empty;
37 import java.io.IOException;
38 import java.util.List;
39 import java.util.concurrent.TimeUnit;
40 import javax.annotation.Generated;
41 
42 // AUTO-GENERATED DOCUMENTATION AND CLASS.
43 /**
44  * Service Description: This file describes an API for collecting and viewing traces and spans
45  * within a trace. A Trace is a collection of spans corresponding to a single operation or set of
46  * operations for an application. A span is an individual timed event which forms a node of the
47  * trace tree. Spans for a single trace may span multiple services.
48  *
49  * <p>This class provides the ability to make remote calls to the backing service through method
50  * calls that map to API methods. Sample code to get started:
51  *
52  * <pre>{@code
53  * // This snippet has been automatically generated and should be regarded as a code template only.
54  * // It will require modifications to work:
55  * // - It may require correct/in-range values for request initialization.
56  * // - It may require specifying regional endpoints when creating the service client as shown in
57  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
58  * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) {
59  *   String projectId = "projectId-894832108";
60  *   String traceId = "traceId-1067401920";
61  *   Trace response = traceServiceClient.getTrace(projectId, traceId);
62  * }
63  * }</pre>
64  *
65  * <p>Note: close() needs to be called on the TraceServiceClient object to clean up resources such
66  * as threads. In the example above, try-with-resources is used, which automatically calls close().
67  *
68  * <p>The surface of this class includes several types of Java methods for each of the API's
69  * methods:
70  *
71  * <ol>
72  *   <li>A "flattened" method. With this type of method, the fields of the request type have been
73  *       converted into function parameters. It may be the case that not all fields are available as
74  *       parameters, and not every API method will have a flattened method entry point.
75  *   <li>A "request object" method. This type of method only takes one parameter, a request object,
76  *       which must be constructed before the call. Not every API method will have a request object
77  *       method.
78  *   <li>A "callable" method. This type of method takes no parameters and returns an immutable API
79  *       callable object, which can be used to initiate calls to the service.
80  * </ol>
81  *
82  * <p>See the individual methods for example code.
83  *
84  * <p>Many parameters require resource names to be formatted in a particular way. To assist with
85  * these names, this class includes a format method for each type of name, and additionally a parse
86  * method to extract the individual identifiers contained within names that are returned.
87  *
88  * <p>This class can be customized by passing in a custom instance of TraceServiceSettings to
89  * create(). For example:
90  *
91  * <p>To customize credentials:
92  *
93  * <pre>{@code
94  * // This snippet has been automatically generated and should be regarded as a code template only.
95  * // It will require modifications to work:
96  * // - It may require correct/in-range values for request initialization.
97  * // - It may require specifying regional endpoints when creating the service client as shown in
98  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
99  * TraceServiceSettings traceServiceSettings =
100  *     TraceServiceSettings.newBuilder()
101  *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
102  *         .build();
103  * TraceServiceClient traceServiceClient = TraceServiceClient.create(traceServiceSettings);
104  * }</pre>
105  *
106  * <p>To customize the endpoint:
107  *
108  * <pre>{@code
109  * // This snippet has been automatically generated and should be regarded as a code template only.
110  * // It will require modifications to work:
111  * // - It may require correct/in-range values for request initialization.
112  * // - It may require specifying regional endpoints when creating the service client as shown in
113  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
114  * TraceServiceSettings traceServiceSettings =
115  *     TraceServiceSettings.newBuilder().setEndpoint(myEndpoint).build();
116  * TraceServiceClient traceServiceClient = TraceServiceClient.create(traceServiceSettings);
117  * }</pre>
118  *
119  * <p>To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over
120  * the wire:
121  *
122  * <pre>{@code
123  * // This snippet has been automatically generated and should be regarded as a code template only.
124  * // It will require modifications to work:
125  * // - It may require correct/in-range values for request initialization.
126  * // - It may require specifying regional endpoints when creating the service client as shown in
127  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
128  * TraceServiceSettings traceServiceSettings = TraceServiceSettings.newHttpJsonBuilder().build();
129  * TraceServiceClient traceServiceClient = TraceServiceClient.create(traceServiceSettings);
130  * }</pre>
131  *
132  * <p>Please refer to the GitHub repository's samples for more quickstart code snippets.
133  */
134 @Generated("by gapic-generator-java")
135 public class TraceServiceClient implements BackgroundResource {
136   private final TraceServiceSettings settings;
137   private final TraceServiceStub stub;
138 
139   /** Constructs an instance of TraceServiceClient with default settings. */
create()140   public static final TraceServiceClient create() throws IOException {
141     return create(TraceServiceSettings.newBuilder().build());
142   }
143 
144   /**
145    * Constructs an instance of TraceServiceClient, using the given settings. The channels are
146    * created based on the settings passed in, or defaults for any settings that are not set.
147    */
create(TraceServiceSettings settings)148   public static final TraceServiceClient create(TraceServiceSettings settings) throws IOException {
149     return new TraceServiceClient(settings);
150   }
151 
152   /**
153    * Constructs an instance of TraceServiceClient, using the given stub for making calls. This is
154    * for advanced usage - prefer using create(TraceServiceSettings).
155    */
create(TraceServiceStub stub)156   public static final TraceServiceClient create(TraceServiceStub stub) {
157     return new TraceServiceClient(stub);
158   }
159 
160   /**
161    * Constructs an instance of TraceServiceClient, using the given settings. This is protected so
162    * that it is easy to make a subclass, but otherwise, the static factory methods should be
163    * preferred.
164    */
TraceServiceClient(TraceServiceSettings settings)165   protected TraceServiceClient(TraceServiceSettings settings) throws IOException {
166     this.settings = settings;
167     this.stub = ((TraceServiceStubSettings) settings.getStubSettings()).createStub();
168   }
169 
TraceServiceClient(TraceServiceStub stub)170   protected TraceServiceClient(TraceServiceStub stub) {
171     this.settings = null;
172     this.stub = stub;
173   }
174 
getSettings()175   public final TraceServiceSettings getSettings() {
176     return settings;
177   }
178 
getStub()179   public TraceServiceStub getStub() {
180     return stub;
181   }
182 
183   // AUTO-GENERATED DOCUMENTATION AND METHOD.
184   /**
185    * Returns of a list of traces that match the specified filter conditions.
186    *
187    * <p>Sample code:
188    *
189    * <pre>{@code
190    * // This snippet has been automatically generated and should be regarded as a code template only.
191    * // It will require modifications to work:
192    * // - It may require correct/in-range values for request initialization.
193    * // - It may require specifying regional endpoints when creating the service client as shown in
194    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
195    * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) {
196    *   String projectId = "projectId-894832108";
197    *   for (Trace element : traceServiceClient.listTraces(projectId).iterateAll()) {
198    *     // doThingsWith(element);
199    *   }
200    * }
201    * }</pre>
202    *
203    * @param projectId Required. ID of the Cloud project where the trace data is stored.
204    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
205    */
listTraces(String projectId)206   public final ListTracesPagedResponse listTraces(String projectId) {
207     ListTracesRequest request = ListTracesRequest.newBuilder().setProjectId(projectId).build();
208     return listTraces(request);
209   }
210 
211   // AUTO-GENERATED DOCUMENTATION AND METHOD.
212   /**
213    * Returns of a list of traces that match the specified filter conditions.
214    *
215    * <p>Sample code:
216    *
217    * <pre>{@code
218    * // This snippet has been automatically generated and should be regarded as a code template only.
219    * // It will require modifications to work:
220    * // - It may require correct/in-range values for request initialization.
221    * // - It may require specifying regional endpoints when creating the service client as shown in
222    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
223    * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) {
224    *   ListTracesRequest request =
225    *       ListTracesRequest.newBuilder()
226    *           .setProjectId("projectId-894832108")
227    *           .setPageSize(883849137)
228    *           .setPageToken("pageToken873572522")
229    *           .setStartTime(Timestamp.newBuilder().build())
230    *           .setEndTime(Timestamp.newBuilder().build())
231    *           .setFilter("filter-1274492040")
232    *           .setOrderBy("orderBy-1207110587")
233    *           .build();
234    *   for (Trace element : traceServiceClient.listTraces(request).iterateAll()) {
235    *     // doThingsWith(element);
236    *   }
237    * }
238    * }</pre>
239    *
240    * @param request The request object containing all of the parameters for the API call.
241    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
242    */
listTraces(ListTracesRequest request)243   public final ListTracesPagedResponse listTraces(ListTracesRequest request) {
244     return listTracesPagedCallable().call(request);
245   }
246 
247   // AUTO-GENERATED DOCUMENTATION AND METHOD.
248   /**
249    * Returns of a list of traces that match the specified filter conditions.
250    *
251    * <p>Sample code:
252    *
253    * <pre>{@code
254    * // This snippet has been automatically generated and should be regarded as a code template only.
255    * // It will require modifications to work:
256    * // - It may require correct/in-range values for request initialization.
257    * // - It may require specifying regional endpoints when creating the service client as shown in
258    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
259    * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) {
260    *   ListTracesRequest request =
261    *       ListTracesRequest.newBuilder()
262    *           .setProjectId("projectId-894832108")
263    *           .setPageSize(883849137)
264    *           .setPageToken("pageToken873572522")
265    *           .setStartTime(Timestamp.newBuilder().build())
266    *           .setEndTime(Timestamp.newBuilder().build())
267    *           .setFilter("filter-1274492040")
268    *           .setOrderBy("orderBy-1207110587")
269    *           .build();
270    *   ApiFuture<Trace> future = traceServiceClient.listTracesPagedCallable().futureCall(request);
271    *   // Do something.
272    *   for (Trace element : future.get().iterateAll()) {
273    *     // doThingsWith(element);
274    *   }
275    * }
276    * }</pre>
277    */
listTracesPagedCallable()278   public final UnaryCallable<ListTracesRequest, ListTracesPagedResponse> listTracesPagedCallable() {
279     return stub.listTracesPagedCallable();
280   }
281 
282   // AUTO-GENERATED DOCUMENTATION AND METHOD.
283   /**
284    * Returns of a list of traces that match the specified filter conditions.
285    *
286    * <p>Sample code:
287    *
288    * <pre>{@code
289    * // This snippet has been automatically generated and should be regarded as a code template only.
290    * // It will require modifications to work:
291    * // - It may require correct/in-range values for request initialization.
292    * // - It may require specifying regional endpoints when creating the service client as shown in
293    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
294    * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) {
295    *   ListTracesRequest request =
296    *       ListTracesRequest.newBuilder()
297    *           .setProjectId("projectId-894832108")
298    *           .setPageSize(883849137)
299    *           .setPageToken("pageToken873572522")
300    *           .setStartTime(Timestamp.newBuilder().build())
301    *           .setEndTime(Timestamp.newBuilder().build())
302    *           .setFilter("filter-1274492040")
303    *           .setOrderBy("orderBy-1207110587")
304    *           .build();
305    *   while (true) {
306    *     ListTracesResponse response = traceServiceClient.listTracesCallable().call(request);
307    *     for (Trace element : response.getTracesList()) {
308    *       // doThingsWith(element);
309    *     }
310    *     String nextPageToken = response.getNextPageToken();
311    *     if (!Strings.isNullOrEmpty(nextPageToken)) {
312    *       request = request.toBuilder().setPageToken(nextPageToken).build();
313    *     } else {
314    *       break;
315    *     }
316    *   }
317    * }
318    * }</pre>
319    */
listTracesCallable()320   public final UnaryCallable<ListTracesRequest, ListTracesResponse> listTracesCallable() {
321     return stub.listTracesCallable();
322   }
323 
324   // AUTO-GENERATED DOCUMENTATION AND METHOD.
325   /**
326    * Gets a single trace by its ID.
327    *
328    * <p>Sample code:
329    *
330    * <pre>{@code
331    * // This snippet has been automatically generated and should be regarded as a code template only.
332    * // It will require modifications to work:
333    * // - It may require correct/in-range values for request initialization.
334    * // - It may require specifying regional endpoints when creating the service client as shown in
335    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
336    * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) {
337    *   String projectId = "projectId-894832108";
338    *   String traceId = "traceId-1067401920";
339    *   Trace response = traceServiceClient.getTrace(projectId, traceId);
340    * }
341    * }</pre>
342    *
343    * @param projectId Required. ID of the Cloud project where the trace data is stored.
344    * @param traceId Required. ID of the trace to return.
345    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
346    */
getTrace(String projectId, String traceId)347   public final Trace getTrace(String projectId, String traceId) {
348     GetTraceRequest request =
349         GetTraceRequest.newBuilder().setProjectId(projectId).setTraceId(traceId).build();
350     return getTrace(request);
351   }
352 
353   // AUTO-GENERATED DOCUMENTATION AND METHOD.
354   /**
355    * Gets a single trace by its ID.
356    *
357    * <p>Sample code:
358    *
359    * <pre>{@code
360    * // This snippet has been automatically generated and should be regarded as a code template only.
361    * // It will require modifications to work:
362    * // - It may require correct/in-range values for request initialization.
363    * // - It may require specifying regional endpoints when creating the service client as shown in
364    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
365    * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) {
366    *   GetTraceRequest request =
367    *       GetTraceRequest.newBuilder()
368    *           .setProjectId("projectId-894832108")
369    *           .setTraceId("traceId-1067401920")
370    *           .build();
371    *   Trace response = traceServiceClient.getTrace(request);
372    * }
373    * }</pre>
374    *
375    * @param request The request object containing all of the parameters for the API call.
376    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
377    */
getTrace(GetTraceRequest request)378   public final Trace getTrace(GetTraceRequest request) {
379     return getTraceCallable().call(request);
380   }
381 
382   // AUTO-GENERATED DOCUMENTATION AND METHOD.
383   /**
384    * Gets a single trace by its ID.
385    *
386    * <p>Sample code:
387    *
388    * <pre>{@code
389    * // This snippet has been automatically generated and should be regarded as a code template only.
390    * // It will require modifications to work:
391    * // - It may require correct/in-range values for request initialization.
392    * // - It may require specifying regional endpoints when creating the service client as shown in
393    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
394    * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) {
395    *   GetTraceRequest request =
396    *       GetTraceRequest.newBuilder()
397    *           .setProjectId("projectId-894832108")
398    *           .setTraceId("traceId-1067401920")
399    *           .build();
400    *   ApiFuture<Trace> future = traceServiceClient.getTraceCallable().futureCall(request);
401    *   // Do something.
402    *   Trace response = future.get();
403    * }
404    * }</pre>
405    */
getTraceCallable()406   public final UnaryCallable<GetTraceRequest, Trace> getTraceCallable() {
407     return stub.getTraceCallable();
408   }
409 
410   // AUTO-GENERATED DOCUMENTATION AND METHOD.
411   /**
412    * Sends new traces to Stackdriver Trace or updates existing traces. If the ID of a trace that you
413    * send matches that of an existing trace, any fields in the existing trace and its spans are
414    * overwritten by the provided values, and any new fields provided are merged with the existing
415    * trace data. If the ID does not match, a new trace is created.
416    *
417    * <p>Sample code:
418    *
419    * <pre>{@code
420    * // This snippet has been automatically generated and should be regarded as a code template only.
421    * // It will require modifications to work:
422    * // - It may require correct/in-range values for request initialization.
423    * // - It may require specifying regional endpoints when creating the service client as shown in
424    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
425    * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) {
426    *   String projectId = "projectId-894832108";
427    *   Traces traces = Traces.newBuilder().build();
428    *   traceServiceClient.patchTraces(projectId, traces);
429    * }
430    * }</pre>
431    *
432    * @param projectId Required. ID of the Cloud project where the trace data is stored.
433    * @param traces Required. The body of the message.
434    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
435    */
patchTraces(String projectId, Traces traces)436   public final void patchTraces(String projectId, Traces traces) {
437     PatchTracesRequest request =
438         PatchTracesRequest.newBuilder().setProjectId(projectId).setTraces(traces).build();
439     patchTraces(request);
440   }
441 
442   // AUTO-GENERATED DOCUMENTATION AND METHOD.
443   /**
444    * Sends new traces to Stackdriver Trace or updates existing traces. If the ID of a trace that you
445    * send matches that of an existing trace, any fields in the existing trace and its spans are
446    * overwritten by the provided values, and any new fields provided are merged with the existing
447    * trace data. If the ID does not match, a new trace is created.
448    *
449    * <p>Sample code:
450    *
451    * <pre>{@code
452    * // This snippet has been automatically generated and should be regarded as a code template only.
453    * // It will require modifications to work:
454    * // - It may require correct/in-range values for request initialization.
455    * // - It may require specifying regional endpoints when creating the service client as shown in
456    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
457    * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) {
458    *   PatchTracesRequest request =
459    *       PatchTracesRequest.newBuilder()
460    *           .setProjectId("projectId-894832108")
461    *           .setTraces(Traces.newBuilder().build())
462    *           .build();
463    *   traceServiceClient.patchTraces(request);
464    * }
465    * }</pre>
466    *
467    * @param request The request object containing all of the parameters for the API call.
468    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
469    */
patchTraces(PatchTracesRequest request)470   public final void patchTraces(PatchTracesRequest request) {
471     patchTracesCallable().call(request);
472   }
473 
474   // AUTO-GENERATED DOCUMENTATION AND METHOD.
475   /**
476    * Sends new traces to Stackdriver Trace or updates existing traces. If the ID of a trace that you
477    * send matches that of an existing trace, any fields in the existing trace and its spans are
478    * overwritten by the provided values, and any new fields provided are merged with the existing
479    * trace data. If the ID does not match, a new trace is created.
480    *
481    * <p>Sample code:
482    *
483    * <pre>{@code
484    * // This snippet has been automatically generated and should be regarded as a code template only.
485    * // It will require modifications to work:
486    * // - It may require correct/in-range values for request initialization.
487    * // - It may require specifying regional endpoints when creating the service client as shown in
488    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
489    * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) {
490    *   PatchTracesRequest request =
491    *       PatchTracesRequest.newBuilder()
492    *           .setProjectId("projectId-894832108")
493    *           .setTraces(Traces.newBuilder().build())
494    *           .build();
495    *   ApiFuture<Empty> future = traceServiceClient.patchTracesCallable().futureCall(request);
496    *   // Do something.
497    *   future.get();
498    * }
499    * }</pre>
500    */
patchTracesCallable()501   public final UnaryCallable<PatchTracesRequest, Empty> patchTracesCallable() {
502     return stub.patchTracesCallable();
503   }
504 
505   @Override
close()506   public final void close() {
507     stub.close();
508   }
509 
510   @Override
shutdown()511   public void shutdown() {
512     stub.shutdown();
513   }
514 
515   @Override
isShutdown()516   public boolean isShutdown() {
517     return stub.isShutdown();
518   }
519 
520   @Override
isTerminated()521   public boolean isTerminated() {
522     return stub.isTerminated();
523   }
524 
525   @Override
shutdownNow()526   public void shutdownNow() {
527     stub.shutdownNow();
528   }
529 
530   @Override
awaitTermination(long duration, TimeUnit unit)531   public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
532     return stub.awaitTermination(duration, unit);
533   }
534 
535   public static class ListTracesPagedResponse
536       extends AbstractPagedListResponse<
537           ListTracesRequest,
538           ListTracesResponse,
539           Trace,
540           ListTracesPage,
541           ListTracesFixedSizeCollection> {
542 
createAsync( PageContext<ListTracesRequest, ListTracesResponse, Trace> context, ApiFuture<ListTracesResponse> futureResponse)543     public static ApiFuture<ListTracesPagedResponse> createAsync(
544         PageContext<ListTracesRequest, ListTracesResponse, Trace> context,
545         ApiFuture<ListTracesResponse> futureResponse) {
546       ApiFuture<ListTracesPage> futurePage =
547           ListTracesPage.createEmptyPage().createPageAsync(context, futureResponse);
548       return ApiFutures.transform(
549           futurePage, input -> new ListTracesPagedResponse(input), MoreExecutors.directExecutor());
550     }
551 
ListTracesPagedResponse(ListTracesPage page)552     private ListTracesPagedResponse(ListTracesPage page) {
553       super(page, ListTracesFixedSizeCollection.createEmptyCollection());
554     }
555   }
556 
557   public static class ListTracesPage
558       extends AbstractPage<ListTracesRequest, ListTracesResponse, Trace, ListTracesPage> {
559 
ListTracesPage( PageContext<ListTracesRequest, ListTracesResponse, Trace> context, ListTracesResponse response)560     private ListTracesPage(
561         PageContext<ListTracesRequest, ListTracesResponse, Trace> context,
562         ListTracesResponse response) {
563       super(context, response);
564     }
565 
createEmptyPage()566     private static ListTracesPage createEmptyPage() {
567       return new ListTracesPage(null, null);
568     }
569 
570     @Override
createPage( PageContext<ListTracesRequest, ListTracesResponse, Trace> context, ListTracesResponse response)571     protected ListTracesPage createPage(
572         PageContext<ListTracesRequest, ListTracesResponse, Trace> context,
573         ListTracesResponse response) {
574       return new ListTracesPage(context, response);
575     }
576 
577     @Override
createPageAsync( PageContext<ListTracesRequest, ListTracesResponse, Trace> context, ApiFuture<ListTracesResponse> futureResponse)578     public ApiFuture<ListTracesPage> createPageAsync(
579         PageContext<ListTracesRequest, ListTracesResponse, Trace> context,
580         ApiFuture<ListTracesResponse> futureResponse) {
581       return super.createPageAsync(context, futureResponse);
582     }
583   }
584 
585   public static class ListTracesFixedSizeCollection
586       extends AbstractFixedSizeCollection<
587           ListTracesRequest,
588           ListTracesResponse,
589           Trace,
590           ListTracesPage,
591           ListTracesFixedSizeCollection> {
592 
ListTracesFixedSizeCollection(List<ListTracesPage> pages, int collectionSize)593     private ListTracesFixedSizeCollection(List<ListTracesPage> pages, int collectionSize) {
594       super(pages, collectionSize);
595     }
596 
createEmptyCollection()597     private static ListTracesFixedSizeCollection createEmptyCollection() {
598       return new ListTracesFixedSizeCollection(null, 0);
599     }
600 
601     @Override
createCollection( List<ListTracesPage> pages, int collectionSize)602     protected ListTracesFixedSizeCollection createCollection(
603         List<ListTracesPage> pages, int collectionSize) {
604       return new ListTracesFixedSizeCollection(pages, collectionSize);
605     }
606   }
607 }
608