Class PagedIterable<T>

Type Parameters:
T - The type of value contained in this IterableStream.
All Implemented Interfaces:
Iterable<T>

public class PagedIterable<T> extends PagedIterableBase<T, PagedResponse<T>>
This class provides utility to iterate over PagedResponse using Stream and Iterable interfaces.

Code sample using Stream by page

// process the streamByPage
pagedIterableResponse.streamByPage().forEach(resp -> {
    System.out.printf("Response headers are %s. Url %s  and status code %d %n", resp.getHeaders(),
        resp.getRequest().getUrl(), resp.getStatusCode());
    resp.getElements().forEach(value -> System.out.printf("Response value is %d %n", value));
});

Code sample using Iterable by page

// process the iterableByPage
pagedIterableResponse.iterableByPage().forEach(resp -> {
    System.out.printf("Response headers are %s. Url %s  and status code %d %n", resp.getHeaders(),
        resp.getRequest().getUrl(), resp.getStatusCode());
    resp.getElements().forEach(value -> System.out.printf("Response value is %d %n", value));
});

Code sample using Iterable by page and while loop

// iterate over each page
for (PagedResponse<Integer> resp : pagedIterableResponse.iterableByPage()) {
    System.out.printf("Response headers are %s. Url %s  and status code %d %n", resp.getHeaders(),
        resp.getRequest().getUrl(), resp.getStatusCode());
    resp.getElements().forEach(value -> System.out.printf("Response value is %d %n", value));
}

Code sample using Iterable by page and continuation token

String continuationToken = getContinuationToken();
pagedIterable
    .iterableByPage(continuationToken)
    .forEach(page -> System.out.printf("Processing page containing item values: %s%n",
        page.getElements().stream().map(String::valueOf).collect(Collectors.joining(", "))));
See Also:
  • Constructor Details

    • PagedIterable

      public PagedIterable(PagedFlux<T> pagedFlux)
      Creates instance given PagedFlux.
      Parameters:
      pagedFlux - to use as iterable
    • PagedIterable

      public PagedIterable(Supplier<PagedResponse<T>> firstPageRetriever)
      Creates an instance of PagedIterable that consists of only a single page. This constructor takes a Supplier that return the single page of T.

      Code sample

      // A supplier that fetches the first page of data from source/service
      Supplier<PagedResponse<Integer>> firstPageRetrieverFunction = () -> getFirstPage();
      
      PagedIterable<Integer> pagedIterableInstance = new PagedIterable<>(firstPageRetrieverFunction,
          nextPageRetriever);
      
      Parameters:
      firstPageRetriever - Supplier that retrieves the first page.
    • PagedIterable

      public PagedIterable(Function<Integer, PagedResponse<T>> firstPageRetriever)
      Creates an instance of PagedIterable that consists of only a single page with a given element count.

      Code sample

      // A function that fetches the single page of data from a source/service.
      Function<Integer, Mono<PagedResponse<Integer>>> singlePageRetriever = pageSize ->
          getFirstPageWithSize(pageSize);
      
      PagedFlux<Integer> singlePageFluxWithPageSize = new PagedFlux<Integer>(singlePageRetriever);
      
      Parameters:
      firstPageRetriever - Function that retrieves the first page.
    • PagedIterable

      public PagedIterable(Supplier<PagedResponse<T>> firstPageRetriever, Function<String, PagedResponse<T>> nextPageRetriever)
      Creates an instance of PagedIterable. The constructor takes a Supplier and Function. The Supplier returns the first page of T, the Function retrieves subsequent pages of T.

      Code sample

      // A supplier that fetches the first page of data from source/service
      Supplier<PagedResponse<Integer>> firstPageRetriever = () -> getFirstPage();
      
      // A function that fetches subsequent pages of data from source/service given a continuation token
      Function<String, PagedResponse<Integer>> nextPageRetriever =
          continuationToken -> getNextPage(continuationToken);
      
      PagedIterable<Integer> pagedIterable = new PagedIterable<>(firstPageRetriever,
          nextPageRetriever);
      
      Parameters:
      firstPageRetriever - Supplier that retrieves the first page
      nextPageRetriever - Function that retrieves the next page given a continuation token
    • PagedIterable

      public PagedIterable(Function<Integer, PagedResponse<T>> firstPageRetriever, BiFunction<String, Integer, PagedResponse<T>> nextPageRetriever)
      Creates an instance of PagedIterable that is capable of retrieving multiple pages with of a given page size.

      Code sample

      // A function that fetches the first page of data from a source/service.
      Function<Integer, PagedResponse<Integer>> firstPageRetriever = pageSize -> getPage(pageSize);
      
      // A function that fetches subsequent pages of data from a source/service given a continuation token.
      BiFunction<String, Integer, PagedResponse<Integer>> nextPageRetriever = (continuationToken, pageSize) ->
          getPage(continuationToken, pageSize);
      
      PagedIterable<Integer> pagedIterableWithPageSize = new PagedIterable<>(firstPageRetriever, nextPageRetriever);
      
      Parameters:
      firstPageRetriever - Function that retrieves the first page.
      nextPageRetriever - BiFunction that retrieves the next page given a continuation token and page size.
  • Method Details

    • mapPage

      public <S> PagedIterable<S> mapPage(Function<T,S> mapper)
      Maps this PagedIterable instance of T to a PagedIterable instance of type S as per the provided mapper function.
      Type Parameters:
      S - The mapped type.
      Parameters:
      mapper - The mapper function to convert from type T to type S.
      Returns:
      A PagedIterable of type S.