*/
public void complete(Operation operation) throws RepositoryException {
if (!(operation instanceof SetPropertyValue)) {
throw new IllegalArgumentException();
}
SetPropertyValue op = (SetPropertyValue) operation;
if (op.getPropertyState().getHierarchyEntry() != this) {
throw new IllegalArgumentException();
}
switch (operation.getStatus()) {
case Operation.STATUS_PERSISTED:
// Property can only be the change log target if it was existing and has
// been modified. This includes the case where a property was changed and
// then removed by removing its parent. See JCR-2462.
// Removal, add and implicit modification of protected
// properties must be persisted by save on parent.
PropertyState state = op.getPropertyState();
if (state.getStatus() != Status.REMOVED) {
state.setStatus(Status.EXISTING);
}
break;
case Operation.STATUS_UNDO: