public static Offset none() { return new Offset(0); }
public static <D> Collector<D, ?, Stream<Collection<D>>> chunker(int chunkSize) { return new ChunkCollector<>(chunkSize); }
public static Limit from(Optional<Integer> limit) { return limit.map(Limit::from) .orElse(unlimited()); }
public static Offset from(Optional<Integer> offset) { return offset.map(Offset::from) .orElse(none()); }
public static Offset extractOffset(Request request) { return Offset.from(extractPositiveInteger(request, OFFSET_PARAMETER_NAME)); }
public static Limit unlimited() { return new Limit(Optional.empty()); }
public static Limit from(Optional<Integer> limit) { return limit.map(Limit::from) .orElse(unlimited()); }
public static Offset from(Optional<Integer> offset) { return offset.map(Offset::from) .orElse(none()); }
public static Offset none() { return new Offset(0); }
public static <D> Collector<D, ?, Stream<Collection<D>>> chunker(int chunkSize) { return new ChunkCollector<>(chunkSize); }
public static Limit from(Optional<Integer> limit) { return limit.map(Limit::from) .orElse(unlimited()); }
public static Offset from(Optional<Integer> offset) { return offset.map(Offset::from) .orElse(none()); }
public static Offset none() { return new Offset(0); }
public static <D> Collector<D, ?, Stream<Collection<D>>> chunker(int chunkSize) { return new ChunkCollector<>(chunkSize); }
public static Offset from(int offset) { Preconditions.checkArgument(offset >= 0, "offset should be positive"); return new Offset(offset); }
public static Offset from(int offset) { Preconditions.checkArgument(offset >= 0, "offset should be positive"); return new Offset(offset); }
public static Offset from(int offset) { Preconditions.checkArgument(offset >= 0, "offset should be positive"); return new Offset(offset); }