Example #1
0
        /// <inheritdoc />
        protected override Task <EntityTag> GetDeadETagAsync(IEntry entry, CancellationToken cancellationToken)
        {
            var       storeData = Load(entry, false, cancellationToken);
            var       entryKey  = GetEntryKey(entry);
            EntryInfo info;

            if (!storeData.Entries.TryGetValue(entryKey, out info))
            {
                info = new EntryInfo();
                storeData.Entries.Add(entryKey, info);
            }

            XElement etagElement;

            if (!info.Attributes.TryGetValue(_etagKey, out etagElement))
            {
                var etag = new EntityTag(false);
                etagElement = etag.ToXml();
                info.Attributes[_etagKey] = etagElement;

                Save(entry, storeData, cancellationToken);

                return(Task.FromResult(etag));
            }

            return(Task.FromResult(EntityTag.FromXml(etagElement)));
        }
        /// <inheritdoc />
        protected override Task <EntityTag> GetDeadETagAsync(IEntry entry, CancellationToken cancellationToken)
        {
            var key  = GetETagProperty.PropertyName;
            var prop = _connection
                       .CreateCommand("SELECT * FROM props WHERE id=?", key)
                       .ExecuteQuery <PropertyEntry>()
                       .FirstOrDefault();

            if (prop == null)
            {
                var etag = new EntityTag(false);
                prop = new PropertyEntry()
                {
                    Id       = CreateId(key, entry),
                    Language = null,
                    Path     = entry.Path.ToString(),
                    XmlName  = key.ToString(),
                    Value    = etag.ToXml().ToString(SaveOptions.OmitDuplicateNamespaces),
                };

                _connection.Insert(prop);
                return(Task.FromResult(etag));
            }

            var result = EntityTag.FromXml(XElement.Parse(prop.Value));

            return(Task.FromResult(result));
        }
Example #3
0
        /// <inheritdoc />
        protected override Task <EntityTag> GetDeadETagAsync(IEntry entry, CancellationToken cancellationToken)
        {
            XElement etagElement;
            IDictionary <XName, XElement> properties;

            if (_properties.TryGetValue(entry.Path, out properties))
            {
                properties.TryGetValue(GetETagProperty.PropertyName, out etagElement);
            }
            else
            {
                etagElement = null;
            }

            if (etagElement == null)
            {
                etagElement = new EntityTag(false).ToXml();
                _properties.Add(entry.Path, new Dictionary <XName, XElement>()
                {
                    [etagElement.Name] = etagElement,
                });
            }

            return(Task.FromResult(EntityTag.FromXml(etagElement)));
        }
Example #4
0
        /// <inheritdoc />
        protected override Task <EntityTag> UpdateDeadETagAsync(IEntry entry, CancellationToken cancellationToken)
        {
            var etag        = EntityTag.FromXml(null);
            var etagElement = etag.ToXml();
            var key         = etagElement.Name;

            IDictionary <XName, XElement> properties;

            if (!_properties.TryGetValue(entry.Path, out properties))
            {
                _properties.Add(entry.Path, new Dictionary <XName, XElement>()
                {
                    [key] = etagElement,
                });
            }
            else
            {
                properties[key] = etagElement;
            }

            return(Task.FromResult(etag));
        }