* {@inheritDoc}
*/
@Override
public void visit(UpdateItem expression) {
UpdateClauseStateObject updateClause = stateObject.getModifyClause();
String identificationVariable = updateClause.getIdentificationVariable();
updateItem = updateClause.addItem();
updateItem.setExpression(expression);
try {
// Retrieve the state field path expression
String path = literal(
expression.getStateFieldPathExpression(),
LiteralType.PATH_EXPRESSION_ALL_PATH
);
if (!path.startsWith(identificationVariable + ".")) {
updateItem.setPath(identificationVariable + "." + path);
}
else {
updateItem.setPath(path);
}
// Set the virtual identification variable
if (!updateClause.isIdentificationVariableDefined()) {
updateItem.setVirtualIdentificationVariable(updateClause.getIdentificationVariable());
}
// Create the new value
StateObject stateObject = buildStateObjectImp(expression.getNewValue());
updateItem.setNewValue(stateObject);