Class DynamoDBMapper.SaveObjectHandler
- java.lang.Object
-
- com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.SaveObjectHandler
-
- Enclosing class:
- DynamoDBMapper
protected abstract class DynamoDBMapper.SaveObjectHandler extends Object
The handler for saving object using DynamoDBMapper. Caller should implement the abstract methods to provide the expected behavior on each scenario, and this handler will take care of all the other basic workflow and common operations.
-
-
Field Summary
Fields Modifier and Type Field Description protected Class<?>
clazz
protected Object
object
protected String
userProvidedConditionOperator
Condition operator on the additional expected value conditions specified by the user.protected Map<String,ExpectedAttributeValue>
userProvidedExpectedValueConditions
Additional expected value conditions specified by the user.
-
Constructor Summary
Constructors Constructor Description SaveObjectHandler(Class<?> clazz, Object object, String tableName, DynamoDBMapperConfig saveConfig, ItemConverter converter, DynamoDBSaveExpression saveExpression)
Constructs a handler for saving the specified model object.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected PutItemResult
doPutItem()
Save the item using a PutItem request.protected UpdateItemResult
doUpdateItem()
Save the item using a UpdateItem request.void
execute()
The general workflow of a save operation.protected abstract void
executeLowLevelRequest()
Implement this method to send the low-level request that is necessary to complete the save operation.protected Map<String,AttributeValueUpdate>
getAttributeValueUpdates()
Get the map of AttributeValueUpdate on each modeled attribute.protected List<com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.ValueUpdate>
getInMemoryUpdates()
Get the list of all the necessary in-memory update on the object.protected DynamoDBMapperConfig.SaveBehavior
getLocalSaveBehavior()
Get the SaveBehavior used locally for this save operation.protected Map<String,AttributeValue>
getPrimaryKeyAttributeValues()
Get the map of all the specified primamry keys of the saved object.protected String
getTableName()
Get the table nameprotected Map<String,ExpectedAttributeValue>
mergeExpectedAttributeValueConditions()
Merge and return all the expected value conditions (either user-specified or imposed by the internal implementation of DynamoDBMapper) for this save operation.protected void
onNonKeyAttribute(String attributeName, AttributeValue currentValue)
Implement this method for necessary operations when a non-key attribute is set a non-null value in the object.protected abstract void
onNullNonKeyAttribute(String attributeName)
Implement this method for necessary operations when a non-key attribute is set null in the object.protected abstract void
onPrimaryKeyAttributeValue(String attributeName, AttributeValue keyAttributeValue)
Implement this method to do the necessary operations when a primary key attribute is set with some value.
-
-
-
Field Detail
-
object
protected final Object object
-
clazz
protected final Class<?> clazz
-
userProvidedExpectedValueConditions
protected final Map<String,ExpectedAttributeValue> userProvidedExpectedValueConditions
Additional expected value conditions specified by the user.
-
userProvidedConditionOperator
protected final String userProvidedConditionOperator
Condition operator on the additional expected value conditions specified by the user.
-
-
Constructor Detail
-
SaveObjectHandler
public SaveObjectHandler(Class<?> clazz, Object object, String tableName, DynamoDBMapperConfig saveConfig, ItemConverter converter, DynamoDBSaveExpression saveExpression)
Constructs a handler for saving the specified model object.- Parameters:
object
- The model object to be saved.clazz
- The domain class of the object.tableName
- The table name.saveConifg
- The mapper configuration used for this save.saveExpression
- The save expression, including the user-provided conditions and an optional logic operator.
-
-
Method Detail
-
execute
public void execute()
The general workflow of a save operation.
-
onPrimaryKeyAttributeValue
protected abstract void onPrimaryKeyAttributeValue(String attributeName, AttributeValue keyAttributeValue)
Implement this method to do the necessary operations when a primary key attribute is set with some value.- Parameters:
attributeName
- The name of the primary key attribute.keyAttributeValue
- The AttributeValue of the primary key attribute as specified in the object.
-
onNonKeyAttribute
protected void onNonKeyAttribute(String attributeName, AttributeValue currentValue)
Implement this method for necessary operations when a non-key attribute is set a non-null value in the object. The default implementation simply adds a "PUT" update for the given attribute.- Parameters:
attributeName
- The name of the non-key attribute.currentValue
- The updated value of the given attribute.
-
onNullNonKeyAttribute
protected abstract void onNullNonKeyAttribute(String attributeName)
Implement this method for necessary operations when a non-key attribute is set null in the object.- Parameters:
attributeName
- The name of the non-key attribute.
-
executeLowLevelRequest
protected abstract void executeLowLevelRequest()
Implement this method to send the low-level request that is necessary to complete the save operation.
-
getLocalSaveBehavior
protected DynamoDBMapperConfig.SaveBehavior getLocalSaveBehavior()
Get the SaveBehavior used locally for this save operation.
-
getTableName
protected String getTableName()
Get the table name
-
getPrimaryKeyAttributeValues
protected Map<String,AttributeValue> getPrimaryKeyAttributeValues()
Get the map of all the specified primamry keys of the saved object.
-
getAttributeValueUpdates
protected Map<String,AttributeValueUpdate> getAttributeValueUpdates()
Get the map of AttributeValueUpdate on each modeled attribute.
-
mergeExpectedAttributeValueConditions
protected Map<String,ExpectedAttributeValue> mergeExpectedAttributeValueConditions()
Merge and return all the expected value conditions (either user-specified or imposed by the internal implementation of DynamoDBMapper) for this save operation.
-
getInMemoryUpdates
protected List<com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.ValueUpdate> getInMemoryUpdates()
Get the list of all the necessary in-memory update on the object.
-
doUpdateItem
protected UpdateItemResult doUpdateItem()
Save the item using a UpdateItem request. The handler will call this method if- CLOBBER configuration is not being used;
- AND the item does not contain auto-generated key value;
The ReturnedValues parameter for the UpdateItem request is set as ALL_NEW, which means the service should return all of the attributes of the new version of the item after the update. The handler will use the returned attributes to detect silent failure on the server-side.
-
doPutItem
protected PutItemResult doPutItem()
Save the item using a PutItem request. The handler will call this method if- CLOBBER configuration is being used;
- OR the item contains auto-generated key value;
- OR an UpdateItem request has silently failed (200 response with no affected attribute), which indicates the key-only-put scenario that we used to handle by the keyOnlyPut(...) hack.
-
-