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.