AttributeTransformer.Parameters<?> parameters =
toParameters(attributeValues, clazz, tableName, config);
requestItems.get(tableName).add(
new WriteRequest().withPutRequest(
new PutRequest().withItem(
transformAttributes(parameters))));
}
for ( Object toDelete : objectsToDelete ) {
Class<?> clazz = toDelete.getClass();
String tableName = getTableName(clazz, toDelete, config);
Map<String, AttributeValue> key = getKey(toDelete);
if ( !requestItems.containsKey(tableName) ) {
requestItems.put(tableName, new LinkedList<WriteRequest>());
}
requestItems.get(tableName).add(
new WriteRequest().withDeleteRequest(new DeleteRequest().withKey(key)));
}
// Break into chunks of 25 items and make service requests to DynamoDB
while ( !requestItems.isEmpty() ) {
HashMap<String, List<WriteRequest>> batch =
new HashMap<String, List<WriteRequest>>();
int i = 0;
Iterator<Entry<String, List<WriteRequest>>> tableIter = requestItems.entrySet().iterator();
while ( tableIter.hasNext() && i < MAX_ITEMS_PER_BATCH ) {
Entry<String, List<WriteRequest>> tableRequest = tableIter.next();
batch.put(tableRequest.getKey(), new LinkedList<WriteRequest>());
Iterator<WriteRequest> writeRequestIter = tableRequest.getValue().iterator();
while ( writeRequestIter.hasNext() && i++ < MAX_ITEMS_PER_BATCH ) {
WriteRequest writeRequest = writeRequestIter.next();
batch.get(tableRequest.getKey()).add(writeRequest);
writeRequestIter.remove();
}
// If we've processed all the write requests for this table,