
software.amazon.awssdk.enhanced.dynamodb.model.BatchGetResultPageIterable Maven / Gradle / Ivy
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package software.amazon.awssdk.enhanced.dynamodb.model;
import software.amazon.awssdk.annotations.SdkPublicApi;
import software.amazon.awssdk.annotations.ThreadSafe;
import software.amazon.awssdk.core.pagination.sync.PaginatedItemsIterable;
import software.amazon.awssdk.core.pagination.sync.SdkIterable;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient;
import software.amazon.awssdk.enhanced.dynamodb.MappedTableResource;
/**
* Defines the result of {@link DynamoDbEnhancedClient#batchGetItem} operation.
*
*
* The result can be accessed either through iterable {@link BatchGetResultPage}s or flattened items
* across all pages via {@link #resultsForTable}
*
*
* Example:
*
* 1) Iterating through pages
*
*
* {@code
* batchResults.forEach(page -> {
* page.resultsForTable(firstItemTable).forEach(item -> System.out.println(item));
* page.resultsForTable(secondItemTable).forEach(item -> System.out.println(item));
* });
* }
*
*
* 2) Iterating through items across all pages
*
*
* {@code
* results.resultsForTable(firstItemTable).forEach(item -> System.out.println(item));
* results.resultsForTable(secondItemTable).forEach(item -> System.out.println(item));
* }
*
*/
@SdkPublicApi
@ThreadSafe
public interface BatchGetResultPageIterable extends SdkIterable {
static BatchGetResultPageIterable create(SdkIterable pageIterable) {
return pageIterable::iterator;
}
/**
* Retrieve all items belonging to the supplied table across all pages.
*
* @param mappedTable the table to retrieve items for
* @param the type of the table items
* @return iterable items
*/
default SdkIterable resultsForTable(MappedTableResource mappedTable) {
return PaginatedItemsIterable.builder()
.pagesIterable(this)
.itemIteratorFunction(page -> page.resultsForTable(mappedTable).iterator())
.build();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy