public UpdateItemOutcome updateItem(UpdateItemSpec spec) {
return doUpdateItem(spec);
}
private UpdateItemOutcome doUpdateItem(UpdateItemSpec spec) {
final UpdateItemRequest request = spec.getRequest();
request.setKey(InternalUtils.toAttributeValueMap(spec.getKeyComponents()));
request.setTableName(table.getTableName());
final Collection<Expected> expected = spec.getExpected();
final Map<String, ExpectedAttributeValue> expectedMap =
InternalUtils.toExpectedAttributeValueMap(expected);
request.setExpected(expectedMap);
request.setAttributeUpdates(InternalUtils.toAttributeValueUpdate(spec
.getAttributeUpdate()));
request.setConditionExpression(spec.getConditionExpression());
request.setUpdateExpression(spec.getUpdateExpression());
request.setExpressionAttributeNames(spec.getNameMap());
request.setExpressionAttributeValues(
InternalUtils.fromSimpleMap(spec.getValueMap()));
return new UpdateItemOutcome(client.updateItem(request));
}