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