}
@Test
public void vanillaBatchWriteItemTest() throws Exception{
BatchWriteItemRequest batchWriteItemRequest = new BatchWriteItemRequest();
BatchWriteItemResult result;
// Create a map for the requests in the batch
Map<String, List<WriteRequest>> requestItems = new HashMap<String, List<WriteRequest>>();
// Test: write items to database
Map<String, AttributeValue> forumItem = new HashMap<String, AttributeValue>();
forumItem.put(hashKeyName1, new AttributeValue().withN("1"));
forumItem.put("range", new AttributeValue().withS("a"));
List<WriteRequest> forumList = new ArrayList<WriteRequest>();
forumList.add(new WriteRequest().withPutRequest(new PutRequest().withItem(forumItem)));
Map<String, AttributeValue> forumItem1 = new HashMap<String, AttributeValue>();
forumItem1.put(hashKeyName1, new AttributeValue().withN("2"));
forumItem1.put("range", new AttributeValue().withS("b"));
forumList.add(new WriteRequest().withPutRequest(new PutRequest().withItem(forumItem1)));
Map<String, AttributeValue> forumItem5 = new HashMap<String, AttributeValue>();
forumItem5.put(hashKeyName1, new AttributeValue().withN("3"));
forumItem5.put("range", new AttributeValue().withS("c"));
forumList.add(new WriteRequest().withPutRequest(new PutRequest().withItem(forumItem5)));
Map<String, AttributeValue> forumItem2 = new HashMap<String, AttributeValue>();
forumItem2.put(hashKeyName1, new AttributeValue().withN("4"));
forumItem2.put("range", new AttributeValue().withS("d"));
forumList.add(new WriteRequest().withPutRequest(new PutRequest().withItem(forumItem2)));
Map<String, AttributeValue> forumItem3 = new HashMap<String, AttributeValue>();
forumItem3.put(hashKeyName1, new AttributeValue().withN("5"));
forumItem3.put("range", new AttributeValue().withS("e"));
forumList.add(new WriteRequest().withPutRequest(new PutRequest().withItem(forumItem3)));
Map<String, AttributeValue> forumItem4 = new HashMap<String, AttributeValue>();
forumItem4.put(hashKeyName1, new AttributeValue().withN("6"));
forumItem4.put("range", new AttributeValue().withS("f"));
forumList.add(new WriteRequest().withPutRequest(new PutRequest().withItem(forumItem4)));
//Test case: with duplicated hashkey item but distinguished range key input.
Map<String, AttributeValue> forumItem6 = new HashMap<String, AttributeValue>();
forumItem6.put(hashKeyName1, new AttributeValue().withN("6"));
forumItem6.put("range", new AttributeValue().withS("ff"));
forumList.add(new WriteRequest().withPutRequest(new PutRequest().withItem(forumItem6)));
//Test on Table 2
Map<String, AttributeValue> forumItemT2 = new HashMap<String, AttributeValue>();
forumItemT2.put(hashKeyName2, new AttributeValue().withN("1"));
forumItemT2.put("range", new AttributeValue().withS("a"));
List<WriteRequest> forumListT2 = new ArrayList<WriteRequest>();
forumListT2.add(new WriteRequest().withPutRequest(new PutRequest().withItem(forumItemT2)));
requestItems.put(tableName1, forumList);
requestItems.put(tableName2, forumListT2);
do {
System.out.println("Making the request.");
batchWriteItemRequest.withRequestItems(requestItems);
result = getClient().batchWriteItem(batchWriteItemRequest);
// Print consumed capacity units
for(ConsumedCapacity entry : result.getConsumedCapacity()) {
String tableName1 = entry.getTableName();
Double consumedCapacityUnits = entry.getCapacityUnits();
System.out.println("Consumed capacity units for table " + tableName1 + ": " + consumedCapacityUnits);
}
// Check for unprocessed keys which could happen if you exceed provisioned throughput
System.out.println("Unprocessed Put and Delete requests: \n" + result.getUnprocessedItems());
requestItems = result.getUnprocessedItems();
} while (result.getUnprocessedItems().size() > 0);
}