Example #1
0
 public void PutItem(IStorableItem i_Item)
 {
     if (i_Item is SimpleStorableItem)
     {
         PutItem(i_Item as SimpleStorableItem);
     }
     else
     {
         throw new ArgumentException("Only simple storable item can be saved to this storage");
     }
 }
Example #2
0
 public void PutItem(IStorableItem i_Item)
 {
     if (i_Item is SimpleStorableItem)
     {
         PutItem(i_Item as SimpleStorableItem);
     }
     else
     {
         throw new ArgumentException("Only simple storable item can be saved to this storage");
     }
 }
        private static void ValidateEtagChangeMakesNotItemsEqual(IStorableItem <TId> before, IStorableItem <TId> after, string errorLocation)
        {
            var beforeEtag = before as IOptimisticConcurrencyControlByETag;
            var afterEtag  = after as IOptimisticConcurrencyControlByETag;

            if (beforeEtag == null || afterEtag == null)
            {
                return;
            }

            FulcrumAssert.AreNotEqual(beforeEtag, afterEtag, errorLocation);
            beforeEtag.ETag = beforeEtag.ETag;
            FulcrumAssert.AreNotEqual(beforeEtag, afterEtag, errorLocation);
        }
        private void ValidateEtag(IStorableItem <TId> current, IStorableItem <TId> item)
        {
            var currentWithEtag = current as IOptimisticConcurrencyControlByETag;
            var itemWithEtag    = item as IOptimisticConcurrencyControlByETag;

            if (currentWithEtag == null || itemWithEtag == null)
            {
                return;
            }

            if (string.Equals(currentWithEtag.ETag, itemWithEtag.ETag, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }
            throw new FulcrumConflictException(
                      $"The item of type {typeof(TStorableItem).Name} with id {item.Id} has been updated by someone else. Please get a fresh copy and try again.");
        }