public override IItemData EvaluateUpdate(IItemData sourceItem, IItemData targetItem) { Assert.ArgumentNotNull(targetItem, "targetItemData"); Assert.ArgumentNotNull(sourceItem, "sourceItemData"); var deferredUpdateLog = new DeferredLogWriter <ISerializedAsMasterEvaluatorLogger>(); _logger.Evaluated(sourceItem ?? targetItem); var result = _parentConfiguration.Resolve <IPredicate>().Includes(targetItem); // TODO: In reality, `result` should never come back null here. With the current tests it does however, and it's // ^&*"$*£"&(* to change them if (ShouldUpdateExisting(sourceItem, targetItem, deferredUpdateLog, result?.FieldValueManipulator)) { using (new LogTransaction(_globalLogger)) { var changeHappened = _sourceDataStore.Save(targetItem, result?.FieldValueManipulator); if (changeHappened) { _logger.SerializedUpdatedItem(targetItem); deferredUpdateLog.ExecuteDeferredActions(_logger); } } return(targetItem); } return(null); }
public ISourceItem EvaluateUpdate(ISerializedItem serializedItem, ISourceItem existingItem) { Assert.ArgumentNotNull(serializedItem, "serializedItem"); Assert.ArgumentNotNull(existingItem, "existingItem"); var deferredUpdateLog = new DeferredLogWriter <ISerializedAsMasterEvaluatorLogger>(); if (ShouldUpdateExisting(serializedItem, existingItem, deferredUpdateLog)) { _logger.SerializedUpdatedItem(serializedItem); deferredUpdateLog.ExecuteDeferredActions(_logger); var updatedItem = DoDeserialization(serializedItem); return(updatedItem); } return(null); }
public IItemData EvaluateUpdate(IItemData sourceItem, IItemData targetItem) { Assert.ArgumentNotNull(targetItem, "targetItemData"); Assert.ArgumentNotNull(sourceItem, "sourceItemData"); var deferredUpdateLog = new DeferredLogWriter <ISerializedAsMasterEvaluatorLogger>(); _logger.Evaluated(sourceItem ?? targetItem); if (ShouldUpdateExisting(sourceItem, targetItem, deferredUpdateLog)) { _logger.SerializedUpdatedItem(targetItem); deferredUpdateLog.ExecuteDeferredActions(_logger); DoDeserialization(targetItem); return(targetItem); } return(null); }
public override IItemData EvaluateUpdate(IItemData sourceItem, IItemData targetItem) { Assert.ArgumentNotNull(targetItem, "targetItemData"); Assert.ArgumentNotNull(sourceItem, "sourceItemData"); var deferredUpdateLog = new DeferredLogWriter <ISerializedAsMasterEvaluatorLogger>(); _logger.Evaluated(sourceItem ?? targetItem); if (ShouldUpdateExisting(sourceItem, targetItem, deferredUpdateLog)) { using (new LogTransaction(_globalLogger)) { _logger.SerializedUpdatedItem(targetItem); deferredUpdateLog.ExecuteDeferredActions(_logger); _sourceDataStore.Save(targetItem); } return(targetItem); } return(null); }