T - Type representing an individual paged elementpublic class GitHubPageIterator<T>
extends java.lang.Object
implements org.starchartlabs.alloy.core.collections.PageIterator<T>
PageIterator for traversing paged data read from GitHub APIs
Allows mapping of read elements at the Iterator level to prevent overhead in later steps
Uses paging links to estimate remaining size
See MoreSpliterators.ofPaged(PageIterator) for a path to consuming paged data as a Java Stream via
spliterator
MoreSpliterators.ofPaged(PageIterator)| Constructor and Description |
|---|
GitHubPageIterator(java.lang.String url,
java.util.function.Supplier<java.lang.String> authorizationHeader,
java.lang.String userAgent,
java.util.function.Function<java.lang.String,java.util.Collection<T>> jsonDeserializer)
Creates a new
GitHubPageIterator |
GitHubPageIterator(java.lang.String url,
java.util.function.Supplier<java.lang.String> authorizationHeader,
java.lang.String userAgent,
java.util.function.Function<java.lang.String,java.util.Collection<T>> jsonDeserializer,
java.lang.String mediaType)
Creates a new
GitHubPageIterator |
| Modifier and Type | Method and Description |
|---|---|
long |
estimateSize() |
static GitHubPageIterator<com.google.gson.JsonElement> |
gson(java.lang.String url,
java.util.function.Supplier<java.lang.String> authorizationHeader,
java.lang.String userAgent)
Creates a new
GitHubPageIterator configured to extract paged elements into Gson JsonElement
instances |
static GitHubPageIterator<com.google.gson.JsonElement> |
gson(java.lang.String url,
java.util.function.Supplier<java.lang.String> authorizationHeader,
java.lang.String userAgent,
java.lang.String mediaType)
Creates a new
GitHubPageIterator configured to extract paged elements into Gson JsonElement
instances |
boolean |
hasNext() |
<S> GitHubPageIterator<S> |
map(java.util.function.Function<T,S> mapperPerElement)
Transforms each element of paged data encountered via the provided function
|
java.util.Collection<T> |
next() |
org.starchartlabs.alloy.core.collections.PageIterator<T> |
trySplit() |
public GitHubPageIterator(java.lang.String url,
java.util.function.Supplier<java.lang.String> authorizationHeader,
java.lang.String userAgent,
java.util.function.Function<java.lang.String,java.util.Collection<T>> jsonDeserializer)
GitHubPageIteratorurl - The initial URL to request paged data fromauthorizationHeader - Supplier which provides contents for the Authorization header when making requestsuserAgent - The user agent to make web requests as, as
required by GitHubjsonDeserializer - Function which transforms a raw JSON response representing a full page into individual data elementspublic GitHubPageIterator(java.lang.String url,
java.util.function.Supplier<java.lang.String> authorizationHeader,
java.lang.String userAgent,
java.util.function.Function<java.lang.String,java.util.Collection<T>> jsonDeserializer,
java.lang.String mediaType)
GitHubPageIteratorurl - The initial URL to request paged data fromauthorizationHeader - Supplier which provides contents for the Authorization header when making requestsuserAgent - The user agent to make web requests as, as
required by GitHubjsonDeserializer - Function which transforms a raw JSON response representing a full page into individual data elementsmediaType - The media type to request from the server via Accept headerpublic <S> GitHubPageIterator<S> map(java.util.function.Function<T,S> mapperPerElement)
S - New type representing an individual paged elementmapperPerElement - Function to apply to each element representation, for transforming from the current element
representation to a new onepublic boolean hasNext()
hasNext in interface java.util.Iterator<java.util.Collection<T>>public java.util.Collection<T> next()
next in interface java.util.Iterator<java.util.Collection<T>>public org.starchartlabs.alloy.core.collections.PageIterator<T> trySplit()
trySplit in interface org.starchartlabs.alloy.core.collections.PageIterator<T>public long estimateSize()
estimateSize in interface org.starchartlabs.alloy.core.collections.PageIterator<T>public static GitHubPageIterator<com.google.gson.JsonElement> gson(java.lang.String url, java.util.function.Supplier<java.lang.String> authorizationHeader, java.lang.String userAgent)
GitHubPageIterator configured to extract paged elements into Gson JsonElement
instancesurl - The initial URL to request paged data fromauthorizationHeader - Supplier which provides contents for the Authorization header when making requestsuserAgent - The user agent to make web requests as, as
required by GitHubpublic static GitHubPageIterator<com.google.gson.JsonElement> gson(java.lang.String url, java.util.function.Supplier<java.lang.String> authorizationHeader, java.lang.String userAgent, java.lang.String mediaType)
GitHubPageIterator configured to extract paged elements into Gson JsonElement
instancesurl - The initial URL to request paged data fromauthorizationHeader - Supplier which provides contents for the Authorization header when making requestsuserAgent - The user agent to make web requests as, as
required by GitHubmediaType - The media type to request from the server via Accept header