@Override public boolean hasNextPage(QueryResponse previousPage) { return PaginatorUtils.isOutputTokenAvailable(previousPage.lastEvaluatedKey()); }
@Override public boolean hasNextPage(final QueryResponse previousPage) { return PaginatorUtils.isOutputTokenAvailable(previousPage.lastEvaluatedKey()); }
/** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. */ @Override public String toString() { return ToString.builder("QueryResponse").add("Items", items()).add("Count", count()).add("ScannedCount", scannedCount()) .add("LastEvaluatedKey", lastEvaluatedKey()).add("ConsumedCapacity", consumedCapacity()).build(); }
@Override public int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + Objects.hashCode(items()); hashCode = 31 * hashCode + Objects.hashCode(count()); hashCode = 31 * hashCode + Objects.hashCode(scannedCount()); hashCode = 31 * hashCode + Objects.hashCode(lastEvaluatedKey()); hashCode = 31 * hashCode + Objects.hashCode(consumedCapacity()); return hashCode; }
public <T> Optional<T> getValueForField(String fieldName, Class<T> clazz) { switch (fieldName) { case "Items": return Optional.ofNullable(clazz.cast(items())); case "Count": return Optional.ofNullable(clazz.cast(count())); case "ScannedCount": return Optional.ofNullable(clazz.cast(scannedCount())); case "LastEvaluatedKey": return Optional.ofNullable(clazz.cast(lastEvaluatedKey())); case "ConsumedCapacity": return Optional.ofNullable(clazz.cast(consumedCapacity())); default: return Optional.empty(); } }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof QueryResponse)) { return false; } QueryResponse other = (QueryResponse) obj; return Objects.equals(items(), other.items()) && Objects.equals(count(), other.count()) && Objects.equals(scannedCount(), other.scannedCount()) && Objects.equals(lastEvaluatedKey(), other.lastEvaluatedKey()) && Objects.equals(consumedCapacity(), other.consumedCapacity()); }
@Override public CompletableFuture<QueryResponse> nextPage(final QueryResponse previousPage) { if (previousPage == null) { return client.query(firstRequest); } return client.query(firstRequest.toBuilder().exclusiveStartKey(previousPage.lastEvaluatedKey()).build()); } }
@Override public QueryResponse nextPage(QueryResponse previousPage) { if (previousPage == null) { return client.query(firstRequest); } return client.query(firstRequest.toBuilder().exclusiveStartKey(previousPage.lastEvaluatedKey()).build()); } }
/** * <p> * A helper method to resume the pages in case of unexpected failures. The method takes the last successful response * page as input and returns an instance of {@link QueryPublisher} that can be used to retrieve the consecutive * pages that follows the input page. * </p> */ private final QueryPublisher resume(QueryResponse lastSuccessfulPage) { if (nextPageFetcher.hasNextPage(lastSuccessfulPage)) { return new QueryPublisher(client, firstRequest.toBuilder().exclusiveStartKey(lastSuccessfulPage.lastEvaluatedKey()) .build()); } return new QueryPublisher(client, firstRequest, true) { @Override public void subscribe(Subscriber<? super QueryResponse> subscriber) { subscriber.onSubscribe(new EmptySubscription(subscriber)); } }; }
/** * <p> * A helper method to resume the pages in case of unexpected failures. The method takes the last successful response * page as input and returns an instance of {@link QueryIterable} that can be used to retrieve the consecutive pages * that follows the input page. * </p> */ private final QueryIterable resume(QueryResponse lastSuccessfulPage) { if (nextPageFetcher.hasNextPage(lastSuccessfulPage)) { return new QueryIterable(client, firstRequest.toBuilder().exclusiveStartKey(lastSuccessfulPage.lastEvaluatedKey()) .build()); } return new QueryIterable(client, firstRequest) { @Override public Iterator<QueryResponse> iterator() { return Collections.emptyIterator(); } }; }