in src/main/java/com/amazonaws/dao/OrderDao.java [306:335]
public Order createOrder(final CreateOrderRequest createOrderRequest) {
if (createOrderRequest == null) {
throw new IllegalArgumentException("CreateOrderRequest was null");
}
int tries = 0;
while (tries < 10) {
try {
Map<String, AttributeValue> item = createOrderItem(createOrderRequest);
dynamoDb.putItem(PutItemRequest.builder()
.tableName(tableName)
.item(item)
.conditionExpression("attribute_not_exists(orderId)")
.build());
return Order.builder()
.orderId(item.get(ORDER_ID).s())
.customerId(item.get("customerId").s())
.preTaxAmount(new BigDecimal(item.get("preTaxAmount").n()))
.postTaxAmount(new BigDecimal(item.get("postTaxAmount").n()))
.version(Long.valueOf(item.get("version").n()))
.build();
} catch (ConditionalCheckFailedException e) {
tries++;
} catch (ResourceNotFoundException e) {
throw new TableDoesNotExistException(
"Order table " + tableName + " does not exist");
}
}
throw new CouldNotCreateOrderException(
"Unable to generate unique order id after 10 tries");
}