public static void ExpireSetting(ObjectSettingEntry settingEntry) { if (settingEntry != null && _settingsRegionTokenLookup.TryRemove(settingEntry.GetCacheKey(), out var token)) { token.Cancel(); } }
public static void ExpireSetting(ObjectSettingEntry settingEntry) { if (_settingsRegionTokenLookup.TryRemove(settingEntry, out CancellationTokenSource token)) { token.Cancel(); } }
public virtual ObjectSettingEntry ToModel(ObjectSettingEntry objSetting) { if (objSetting == null) { throw new ArgumentNullException(nameof(objSetting)); } objSetting.Name = Name; objSetting.ObjectType = ObjectType; objSetting.ObjectId = ObjectId; var values = SettingValues.Select(x => x.GetValue()).ToArray(); if (objSetting.IsDictionary) { objSetting.AllowedValues = values; } else { objSetting.Value = values.FirstOrDefault(); } if (objSetting.AllowedValues.IsNullOrEmpty() && objSetting.DefaultValue != null) { objSetting.AllowedValues = new object[] { objSetting.DefaultValue }; } return(objSetting); }
public static IChangeToken CreateChangeToken(ObjectSettingEntry settingEntry) { if (settingEntry == null) { throw new ArgumentNullException(nameof(settingEntry)); } return(CreateChangeTokenForKey(settingEntry.GetCacheKey())); }
public static IChangeToken CreateChangeToken(ObjectSettingEntry settingEntry) { if (settingEntry == null) { throw new ArgumentNullException(nameof(settingEntry)); } var cancellationTokenSource = _settingsRegionTokenLookup.GetOrAdd(settingEntry.GetCacheKey(), new CancellationTokenSource()); return(new CompositeChangeToken(new[] { CreateChangeToken(), new CancellationChangeToken(cancellationTokenSource.Token) })); }
public virtual async Task <IEnumerable <ObjectSettingEntry> > GetObjectSettingsAsync(IEnumerable <string> names, string objectType = null, string objectId = null) { if (names == null) { throw new ArgumentNullException(nameof(names)); } var cacheKey = CacheKey.With(GetType(), "GetSettingByNamesAsync", string.Join(";", names), objectType, objectId); var result = await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { var resultObjectSettings = new List <ObjectSettingEntry>(); var dbStoredSettings = new List <SettingEntity>(); //Try to load setting value from DB using (var repository = _repositoryFactory()) { repository.DisableChangesTracking(); //try to load setting from db dbStoredSettings.AddRange(await repository.GetObjectSettingsByNamesAsync(names.ToArray(), objectType, objectId)); } foreach (var name in names) { var settingDescriptor = _registeredSettingsByNameDict[name]; if (settingDescriptor == null) { throw new PlatformException($"Setting with name {name} is not registered"); } var objectSetting = new ObjectSettingEntry(settingDescriptor) { ObjectType = objectType, ObjectId = objectId }; var dbSetting = dbStoredSettings.FirstOrDefault(x => x.Name.EqualsInvariant(name)); if (dbSetting != null) { objectSetting = dbSetting.ToModel(objectSetting); } resultObjectSettings.Add(objectSetting); //Add cache expiration token for setting cacheEntry.AddExpirationToken(SettingsCacheRegion.CreateChangeToken(objectSetting)); } return(resultObjectSettings); }); return(result); }
public virtual SettingEntity FromModel(ObjectSettingEntry objectSettingEntry) { if (objectSettingEntry == null) { throw new ArgumentNullException(nameof(objectSettingEntry)); } ObjectType = objectSettingEntry.ObjectType; ObjectId = objectSettingEntry.ObjectId; Name = objectSettingEntry.Name; if (objectSettingEntry.IsDictionary) { SettingValues = new ObservableCollection <SettingValueEntity>(objectSettingEntry.AllowedValues.Select(x => new SettingValueEntity { }.SetValue(objectSettingEntry.ValueType, x))); } else { SettingValues = new ObservableCollection <SettingValueEntity>(new[] { new SettingValueEntity { }.SetValue(objectSettingEntry.ValueType, objectSettingEntry.Value) }); } return(this); }
public virtual ObjectSettingEntry ToModel(ObjectSettingEntry objSetting) { if (objSetting == null) { throw new ArgumentNullException(nameof(objSetting)); } // Don't set name to avoid overwriting with db-readed value (it can be misswritten) objSetting.ObjectType = ObjectType; objSetting.ObjectId = ObjectId; var values = SettingValues.Select(x => x.GetValue()).ToArray(); if (objSetting.IsDictionary) { objSetting.AllowedValues = values; } else { objSetting.Value = values.FirstOrDefault(); } return(objSetting); }
public static void ExpireSetting(ObjectSettingEntry settingEntry) { ExpireTokenForKey(settingEntry.GetCacheKey()); }