private static void ManualPagination() { System.out.println("running ManualPagination...\n"); final DynamoDbClient client = DynamoDbClient.create(); ListTablesRequest listTablesRequest = ListTablesRequest.builder().limit(3).build(); boolean done = false; while (!done) { ListTablesResponse listTablesResponse = client.listTables(listTablesRequest); System.out.println(listTablesResponse.tableNames()); if (listTablesResponse.lastEvaluatedTableName() == null) { done = true; } listTablesRequest = listTablesRequest.toBuilder() .exclusiveStartTableName(listTablesResponse.lastEvaluatedTableName()) .build(); } }
last_name = response.lastEvaluatedTableName(); if (last_name == null) { more_tables = false;
/** * 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("ListTablesResponse").add("TableNames", tableNames()) .add("LastEvaluatedTableName", lastEvaluatedTableName()).build(); }
@Override public int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + Objects.hashCode(tableNames()); hashCode = 31 * hashCode + Objects.hashCode(lastEvaluatedTableName()); return hashCode; }
public <T> Optional<T> getValueForField(String fieldName, Class<T> clazz) { switch (fieldName) { case "TableNames": return Optional.ofNullable(clazz.cast(tableNames())); case "LastEvaluatedTableName": return Optional.ofNullable(clazz.cast(lastEvaluatedTableName())); default: return Optional.empty(); } }
@Override public boolean hasNextPage(final ListTablesResponse previousPage) { return PaginatorUtils.isOutputTokenAvailable(previousPage.lastEvaluatedTableName()); }
@Override public boolean hasNextPage(ListTablesResponse previousPage) { return PaginatorUtils.isOutputTokenAvailable(previousPage.lastEvaluatedTableName()); }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof ListTablesResponse)) { return false; } ListTablesResponse other = (ListTablesResponse) obj; return Objects.equals(tableNames(), other.tableNames()) && Objects.equals(lastEvaluatedTableName(), other.lastEvaluatedTableName()); }
@Override public ListTablesResponse nextPage(ListTablesResponse previousPage) { if (previousPage == null) { return client.listTables(firstRequest); } return client.listTables(firstRequest.toBuilder().exclusiveStartTableName(previousPage.lastEvaluatedTableName()) .build()); } }
@Override public CompletableFuture<ListTablesResponse> nextPage(final ListTablesResponse previousPage) { if (previousPage == null) { return client.listTables(firstRequest); } return client.listTables(firstRequest.toBuilder().exclusiveStartTableName(previousPage.lastEvaluatedTableName()) .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 ListTablesPublisher} that can be used to retrieve the consecutive * pages that follows the input page. * </p> */ private final ListTablesPublisher resume(ListTablesResponse lastSuccessfulPage) { if (nextPageFetcher.hasNextPage(lastSuccessfulPage)) { return new ListTablesPublisher(client, firstRequest.toBuilder() .exclusiveStartTableName(lastSuccessfulPage.lastEvaluatedTableName()).build()); } return new ListTablesPublisher(client, firstRequest, true) { @Override public void subscribe(Subscriber<? super ListTablesResponse> 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 ListTablesIterable} that can be used to retrieve the consecutive * pages that follows the input page. * </p> */ private final ListTablesIterable resume(ListTablesResponse lastSuccessfulPage) { if (nextPageFetcher.hasNextPage(lastSuccessfulPage)) { return new ListTablesIterable(client, firstRequest.toBuilder() .exclusiveStartTableName(lastSuccessfulPage.lastEvaluatedTableName()).build()); } return new ListTablesIterable(client, firstRequest) { @Override public Iterator<ListTablesResponse> iterator() { return Collections.emptyIterator(); } }; }