From 714b59a0598690a7d01a7d88dfab400ebd61206e Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 8 Dec 2023 14:17:19 +0800 Subject: [PATCH] Remove `TenantCacheItem` and use `TenantConfigurationCacheItem`. --- .../AbpAspNetCoreMvcClientCacheOptions.cs | 3 - .../Client/AbpAspNetCoreMvcClientModule.cs | 1 - .../Mvc/Client/MvcRemoteTenantStore.cs | 108 +++++++----------- .../TenantConfigurationCacheHelper.cs | 16 --- .../TenantConfigurationCacheItem.cs | 43 +++++++ ...antManagement.Application.Contracts.csproj | 1 - ...antManagementApplicationContractsModule.cs | 4 +- .../Abp/TenantManagement/TenantAppService.cs | 26 +++-- .../Abp/TenantManagement/TenantCacheItem.cs | 35 ------ .../TenantCacheItemInvalidator.cs | 23 ---- .../Volo/Abp/TenantManagement/TenantStore.cs | 18 +-- .../TenantCacheItemInvalidator_Tests.cs | 40 +++---- 12 files changed, 132 insertions(+), 186 deletions(-) delete mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/TenantConfigurationCacheHelper.cs create mode 100644 framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantConfigurationCacheItem.cs delete mode 100644 modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo/Abp/TenantManagement/TenantCacheItem.cs delete mode 100644 modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo/Abp/TenantManagement/TenantCacheItemInvalidator.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientCacheOptions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientCacheOptions.cs index c27670246e..473615af5e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientCacheOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientCacheOptions.cs @@ -4,13 +4,10 @@ namespace Volo.Abp.AspNetCore.Mvc.Client; public class AbpAspNetCoreMvcClientCacheOptions { - public TimeSpan TenantConfigurationCacheAbsoluteExpiration { get; set; } - public TimeSpan ApplicationConfigurationDtoCacheAbsoluteExpiration { get; set; } public AbpAspNetCoreMvcClientCacheOptions() { - TenantConfigurationCacheAbsoluteExpiration = TimeSpan.FromMinutes(5); ApplicationConfigurationDtoCacheAbsoluteExpiration = TimeSpan.FromSeconds(300); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientModule.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientModule.cs index 610a41eefd..a22e68b7b9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientModule.cs @@ -18,7 +18,6 @@ public class AbpAspNetCoreMvcClientModule : AbpModule { Configure(options => { - options.TenantConfigurationCacheAbsoluteExpiration = TimeSpan.FromSeconds(5); options.ApplicationConfigurationDtoCacheAbsoluteExpiration = TimeSpan.FromSeconds(5); }); } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcRemoteTenantStore.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcRemoteTenantStore.cs index 8e163bdd1f..e0c450b8b4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcRemoteTenantStore.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcRemoteTenantStore.cs @@ -1,10 +1,8 @@ using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Options; using Pages.Abp.MultiTenancy.ClientProxies; -using Volo.Abp.AspNetCore.Mvc.MultiTenancy; using Volo.Abp.Caching; using Volo.Abp.DependencyInjection; using Volo.Abp.MultiTenancy; @@ -16,13 +14,13 @@ public class MvcRemoteTenantStore : ITenantStore, ITransientDependency { protected AbpTenantClientProxy TenantAppService { get; } protected IHttpContextAccessor HttpContextAccessor { get; } - protected IDistributedCache Cache { get; } + protected IDistributedCache Cache { get; } protected AbpAspNetCoreMvcClientCacheOptions Options { get; } public MvcRemoteTenantStore( AbpTenantClientProxy tenantAppService, IHttpContextAccessor httpContextAccessor, - IDistributedCache cache, + IDistributedCache cache, IOptions options) { TenantAppService = tenantAppService; @@ -33,119 +31,101 @@ public class MvcRemoteTenantStore : ITenantStore, ITransientDependency public async Task FindAsync(string name) { - var cacheKey = TenantConfigurationCacheHelper.CreateCacheKey(name); + var cacheKey = TenantConfigurationCacheItem.CalculateCacheKey(name); var httpContext = HttpContextAccessor?.HttpContext; - if (httpContext != null && httpContext.Items[cacheKey] is TenantConfiguration tenantConfiguration) + if (httpContext != null && httpContext.Items[cacheKey] is TenantConfigurationCacheItem tenantConfigurationInHttpContext) { - return tenantConfiguration; + return tenantConfigurationInHttpContext?.Value; } - tenantConfiguration = (await Cache.GetOrAddAsync( - cacheKey, - async () => CreateTenantConfiguration(await TenantAppService.FindTenantByNameAsync(name))!, - () => new DistributedCacheEntryOptions - { - AbsoluteExpirationRelativeToNow = Options.TenantConfigurationCacheAbsoluteExpiration - } - ))!; + var tenantConfiguration = await Cache.GetAsync(cacheKey); + if (tenantConfiguration == null) + { + await TenantAppService.FindTenantByNameAsync(name); + tenantConfiguration = await Cache.GetAsync(cacheKey); + } if (httpContext != null) { httpContext.Items[cacheKey] = tenantConfiguration; } - return tenantConfiguration; + return tenantConfiguration?.Value; } public async Task FindAsync(Guid id) { - var cacheKey = TenantConfigurationCacheHelper.CreateCacheKey(id); + var cacheKey = TenantConfigurationCacheItem.CalculateCacheKey(id); var httpContext = HttpContextAccessor?.HttpContext; - if (httpContext != null && httpContext.Items[cacheKey] is TenantConfiguration tenantConfiguration) + if (httpContext != null && httpContext.Items[cacheKey] is TenantConfigurationCacheItem tenantConfigurationInHttpContext) { - return tenantConfiguration; + return tenantConfigurationInHttpContext?.Value; } - tenantConfiguration = (await Cache.GetOrAddAsync( - cacheKey, - async () => CreateTenantConfiguration(await TenantAppService.FindTenantByIdAsync(id))!, - () => new DistributedCacheEntryOptions - { - AbsoluteExpirationRelativeToNow = Options.TenantConfigurationCacheAbsoluteExpiration - } - ))!; + var tenantConfiguration = await Cache.GetAsync(cacheKey); + if (tenantConfiguration == null) + { + await TenantAppService.FindTenantByIdAsync(id); + tenantConfiguration = await Cache.GetAsync(cacheKey); + } if (httpContext != null) { httpContext.Items[cacheKey] = tenantConfiguration; } - return tenantConfiguration; + return tenantConfiguration?.Value; } - public TenantConfiguration Find(string name) + public TenantConfiguration? Find(string name) { - var cacheKey = TenantConfigurationCacheHelper.CreateCacheKey(name); + var cacheKey = TenantConfigurationCacheItem.CalculateCacheKey(name); var httpContext = HttpContextAccessor?.HttpContext; - if (httpContext != null && httpContext.Items[cacheKey] is TenantConfiguration tenantConfiguration) + if (httpContext != null && httpContext.Items[cacheKey] is TenantConfigurationCacheItem tenantConfigurationInHttpContext) { - return tenantConfiguration; + return tenantConfigurationInHttpContext?.Value; } - tenantConfiguration = Cache.GetOrAdd( - cacheKey, - () => AsyncHelper.RunSync(async () => CreateTenantConfiguration(await TenantAppService.FindTenantByNameAsync(name))!), - () => new DistributedCacheEntryOptions - { - AbsoluteExpirationRelativeToNow = Options.TenantConfigurationCacheAbsoluteExpiration - } - )!; + var tenantConfiguration = Cache.Get(cacheKey); + if (tenantConfiguration == null) + { + AsyncHelper.RunSync(async () => await TenantAppService.FindTenantByNameAsync(name)); + tenantConfiguration = Cache.Get(cacheKey); + } if (httpContext != null) { httpContext.Items[cacheKey] = tenantConfiguration; } - return tenantConfiguration; + return tenantConfiguration?.Value; } - public TenantConfiguration Find(Guid id) + public TenantConfiguration? Find(Guid id) { - var cacheKey = TenantConfigurationCacheHelper.CreateCacheKey(id); + var cacheKey = TenantConfigurationCacheItem.CalculateCacheKey(id); var httpContext = HttpContextAccessor?.HttpContext; - if (httpContext != null && httpContext.Items[cacheKey] is TenantConfiguration tenantConfiguration) + if (httpContext != null && httpContext.Items[cacheKey] is TenantConfigurationCacheItem tenantConfigurationInHttpContext) { - return tenantConfiguration; + return tenantConfigurationInHttpContext?.Value; } - tenantConfiguration = Cache.GetOrAdd( - cacheKey, - () => AsyncHelper.RunSync(async () => CreateTenantConfiguration(await TenantAppService.FindTenantByIdAsync(id))!), - () => new DistributedCacheEntryOptions - { - AbsoluteExpirationRelativeToNow = Options.TenantConfigurationCacheAbsoluteExpiration - } - )!; - - if (httpContext != null) + var tenantConfiguration = Cache.Get(cacheKey); + if (tenantConfiguration == null) { - httpContext.Items[cacheKey] = tenantConfiguration; + AsyncHelper.RunSync(async () => await TenantAppService.FindTenantByIdAsync(id)); + tenantConfiguration = Cache.Get(cacheKey); } - return tenantConfiguration; - } - - protected virtual TenantConfiguration? CreateTenantConfiguration(FindTenantResultDto tenantResultDto) - { - if (!tenantResultDto.Success || tenantResultDto.TenantId == null) + if (httpContext != null) { - return null; + httpContext.Items[cacheKey] = tenantConfiguration; } - return new TenantConfiguration(tenantResultDto.TenantId.Value, tenantResultDto.Name!); + return tenantConfiguration?.Value; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/TenantConfigurationCacheHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/TenantConfigurationCacheHelper.cs deleted file mode 100644 index 666cda31c0..0000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/TenantConfigurationCacheHelper.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; - -namespace Volo.Abp.AspNetCore.Mvc.MultiTenancy; - -public static class TenantConfigurationCacheHelper -{ - public static string CreateCacheKey(string tenantName) - { - return $"RemoteTenantStore_Name_{tenantName}"; - } - - public static string CreateCacheKey(Guid tenantId) - { - return $"RemoteTenantStore_Id_{tenantId:N}"; - } -} diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantConfigurationCacheItem.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantConfigurationCacheItem.cs new file mode 100644 index 0000000000..526f60d8c0 --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantConfigurationCacheItem.cs @@ -0,0 +1,43 @@ +using System; + +namespace Volo.Abp.MultiTenancy; + +[Serializable] +[IgnoreMultiTenancy] +public class TenantConfigurationCacheItem +{ + private const string CacheKeyFormat = "i:{0},n:{1}"; + + public TenantConfiguration? Value { get; set; } + + public TenantConfigurationCacheItem() + { + + } + + public TenantConfigurationCacheItem(TenantConfiguration? value) + { + Value = value; + } + + public static string CalculateCacheKey(Guid? id, string? name) + { + if (id == null && name.IsNullOrWhiteSpace()) + { + throw new AbpException("Both id and name can't be invalid."); + } + return string.Format(CacheKeyFormat, + id?.ToString() ?? "null", + (name.IsNullOrWhiteSpace() ? "null" : name)); + } + + public static string CalculateCacheKey(Guid id) + { + return string.Format(CacheKeyFormat, id.ToString(), "null" ); + } + + public static string CalculateCacheKey(string name) + { + return string.Format(CacheKeyFormat, "null", name); + } +} diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo.Abp.TenantManagement.Application.Contracts.csproj b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo.Abp.TenantManagement.Application.Contracts.csproj index 58009adef1..8e849785b7 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo.Abp.TenantManagement.Application.Contracts.csproj +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo.Abp.TenantManagement.Application.Contracts.csproj @@ -18,7 +18,6 @@ - diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/AbpTenantManagementApplicationContractsModule.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/AbpTenantManagementApplicationContractsModule.cs index dddb67ac83..27bfeaaa36 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/AbpTenantManagementApplicationContractsModule.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/AbpTenantManagementApplicationContractsModule.cs @@ -1,5 +1,4 @@ using Volo.Abp.Application; -using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Authorization; using Volo.Abp.Modularity; using Volo.Abp.ObjectExtending; @@ -11,8 +10,7 @@ namespace Volo.Abp.TenantManagement; [DependsOn( typeof(AbpDddApplicationContractsModule), typeof(AbpTenantManagementDomainSharedModule), - typeof(AbpAuthorizationAbstractionsModule), - typeof(AbpAspNetCoreMvcContractsModule) + typeof(AbpAuthorizationAbstractionsModule) )] public class AbpTenantManagementApplicationContractsModule : AbpModule { diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs index cc9ce7455d..060e503235 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; -using Volo.Abp.AspNetCore.Mvc.MultiTenancy; using Volo.Abp.Caching; using Volo.Abp.Data; using Volo.Abp.EventBus.Distributed; @@ -19,14 +18,14 @@ public class TenantAppService : TenantManagementAppServiceBase, ITenantAppServic protected ITenantRepository TenantRepository { get; } protected ITenantManager TenantManager { get; } protected IDistributedEventBus DistributedEventBus { get; } - protected IDistributedCache TenantConfigurationCache { get; } + protected IDistributedCache TenantConfigurationCache { get; } public TenantAppService( ITenantRepository tenantRepository, ITenantManager tenantManager, IDataSeeder dataSeeder, IDistributedEventBus distributedEventBus, - IDistributedCache tenantConfigurationCache) + IDistributedCache tenantConfigurationCache) { DataSeeder = dataSeeder; TenantRepository = tenantRepository; @@ -96,9 +95,6 @@ public class TenantAppService : TenantManagementAppServiceBase, ITenantAppServic ); } - await TenantConfigurationCache.RemoveAsync(TenantConfigurationCacheHelper.CreateCacheKey(tenant.Id)); - await TenantConfigurationCache.RemoveAsync(TenantConfigurationCacheHelper.CreateCacheKey(tenant.Name)); - return ObjectMapper.Map(tenant); } @@ -107,6 +103,13 @@ public class TenantAppService : TenantManagementAppServiceBase, ITenantAppServic { var tenant = await TenantRepository.GetAsync(id); + await TenantConfigurationCache.RemoveManyAsync( + new[] + { + TenantConfigurationCacheItem.CalculateCacheKey(tenant.Id, null), + TenantConfigurationCacheItem.CalculateCacheKey(null, tenant.Name), + }); + await TenantManager.ChangeNameAsync(tenant, input.Name); tenant.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); @@ -114,9 +117,6 @@ public class TenantAppService : TenantManagementAppServiceBase, ITenantAppServic await TenantRepository.UpdateAsync(tenant); - await TenantConfigurationCache.RemoveAsync(TenantConfigurationCacheHelper.CreateCacheKey(tenant.Id)); - await TenantConfigurationCache.RemoveAsync(TenantConfigurationCacheHelper.CreateCacheKey(tenant.Name)); - return ObjectMapper.Map(tenant); } @@ -131,8 +131,12 @@ public class TenantAppService : TenantManagementAppServiceBase, ITenantAppServic await TenantRepository.DeleteAsync(tenant); - await TenantConfigurationCache.RemoveAsync(TenantConfigurationCacheHelper.CreateCacheKey(tenant.Id)); - await TenantConfigurationCache.RemoveAsync(TenantConfigurationCacheHelper.CreateCacheKey(tenant.Name)); + await TenantConfigurationCache.RemoveManyAsync( + new[] + { + TenantConfigurationCacheItem.CalculateCacheKey(tenant.Id, null), + TenantConfigurationCacheItem.CalculateCacheKey(null, tenant.Name), + }); } [Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo/Abp/TenantManagement/TenantCacheItem.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo/Abp/TenantManagement/TenantCacheItem.cs deleted file mode 100644 index ee17d7196d..0000000000 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo/Abp/TenantManagement/TenantCacheItem.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using Volo.Abp.MultiTenancy; - -namespace Volo.Abp.TenantManagement; - -[Serializable] -[IgnoreMultiTenancy] -public class TenantCacheItem -{ - private const string CacheKeyFormat = "i:{0},n:{1}"; - - public TenantConfiguration Value { get; set; } - - public TenantCacheItem() - { - - } - - public TenantCacheItem(TenantConfiguration value) - { - Value = value; - } - - public static string CalculateCacheKey(Guid? id, string name) - { - if (id == null && name.IsNullOrWhiteSpace()) - { - throw new AbpException("Both id and name can't be invalid."); - } - - return string.Format(CacheKeyFormat, - id?.ToString() ?? "null", - (name.IsNullOrWhiteSpace() ? "null" : name)); - } -} diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo/Abp/TenantManagement/TenantCacheItemInvalidator.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo/Abp/TenantManagement/TenantCacheItemInvalidator.cs deleted file mode 100644 index 8bbb8bd49c..0000000000 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo/Abp/TenantManagement/TenantCacheItemInvalidator.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Threading.Tasks; -using Volo.Abp.Caching; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Domain.Entities.Events; -using Volo.Abp.EventBus; - -namespace Volo.Abp.TenantManagement; - -public class TenantCacheItemInvalidator : ILocalEventHandler>, ITransientDependency -{ - protected IDistributedCache Cache { get; } - - public TenantCacheItemInvalidator(IDistributedCache cache) - { - Cache = cache; - } - - public virtual async Task HandleEventAsync(EntityChangedEventData eventData) - { - await Cache.RemoveAsync(TenantCacheItem.CalculateCacheKey(eventData.Entity.Id, null), considerUow: true); - await Cache.RemoveAsync(TenantCacheItem.CalculateCacheKey(null, eventData.Entity.Name), considerUow: true); - } -} diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo/Abp/TenantManagement/TenantStore.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo/Abp/TenantManagement/TenantStore.cs index 262e464a45..5fd23add6b 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo/Abp/TenantManagement/TenantStore.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo/Abp/TenantManagement/TenantStore.cs @@ -13,13 +13,13 @@ public class TenantStore : ITenantStore, ITransientDependency protected ITenantRepository TenantRepository { get; } protected IObjectMapper ObjectMapper { get; } protected ICurrentTenant CurrentTenant { get; } - protected IDistributedCache Cache { get; } + protected IDistributedCache Cache { get; } public TenantStore( ITenantRepository tenantRepository, IObjectMapper objectMapper, ICurrentTenant currentTenant, - IDistributedCache cache) + IDistributedCache cache) { TenantRepository = tenantRepository; ObjectMapper = objectMapper; @@ -49,7 +49,7 @@ public class TenantStore : ITenantStore, ITransientDependency return (GetCacheItem(id, null)).Value; } - protected virtual async Task GetCacheItemAsync(Guid? id, string name) + protected virtual async Task GetCacheItemAsync(Guid? id, string name) { var cacheKey = CalculateCacheKey(id, name); @@ -80,16 +80,16 @@ public class TenantStore : ITenantStore, ITransientDependency throw new AbpException("Both id and name can't be invalid."); } - protected virtual async Task SetCacheAsync(string cacheKey, [CanBeNull] Tenant tenant) + protected virtual async Task SetCacheAsync(string cacheKey, [CanBeNull] Tenant tenant) { var tenantConfiguration = tenant != null ? ObjectMapper.Map(tenant) : null; - var cacheItem = new TenantCacheItem(tenantConfiguration); + var cacheItem = new TenantConfigurationCacheItem(tenantConfiguration); await Cache.SetAsync(cacheKey, cacheItem, considerUow: true); return cacheItem; } [Obsolete("Use GetCacheItemAsync method.")] - protected virtual TenantCacheItem GetCacheItem(Guid? id, string name) + protected virtual TenantConfigurationCacheItem GetCacheItem(Guid? id, string name) { var cacheKey = CalculateCacheKey(id, name); @@ -121,16 +121,16 @@ public class TenantStore : ITenantStore, ITransientDependency } [Obsolete("Use SetCacheAsync method.")] - protected virtual TenantCacheItem SetCache(string cacheKey, [CanBeNull] Tenant tenant) + protected virtual TenantConfigurationCacheItem SetCache(string cacheKey, [CanBeNull] Tenant tenant) { var tenantConfiguration = tenant != null ? ObjectMapper.Map(tenant) : null; - var cacheItem = new TenantCacheItem(tenantConfiguration); + var cacheItem = new TenantConfigurationCacheItem(tenantConfiguration); Cache.Set(cacheKey, cacheItem, considerUow: true); return cacheItem; } protected virtual string CalculateCacheKey(Guid? id, string name) { - return TenantCacheItem.CalculateCacheKey(id, name); + return TenantConfigurationCacheItem.CalculateCacheKey(id, name); } } diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.Domain.Tests/Volo/Abp/TenantManagement/TenantCacheItemInvalidator_Tests.cs b/modules/tenant-management/test/Volo.Abp.TenantManagement.Domain.Tests/Volo/Abp/TenantManagement/TenantCacheItemInvalidator_Tests.cs index ad4e66aa7a..85416c7755 100644 --- a/modules/tenant-management/test/Volo.Abp.TenantManagement.Domain.Tests/Volo/Abp/TenantManagement/TenantCacheItemInvalidator_Tests.cs +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.Domain.Tests/Volo/Abp/TenantManagement/TenantCacheItemInvalidator_Tests.cs @@ -6,15 +6,15 @@ using Xunit; namespace Volo.Abp.TenantManagement; -public class TenantCacheItemInvalidator_Tests : AbpTenantManagementDomainTestBase +public class TenantConfigurationCacheItemInvalidator_Tests : AbpTenantManagementDomainTestBase { - private readonly IDistributedCache _cache; + private readonly IDistributedCache _cache; private readonly ITenantStore _tenantStore; private readonly ITenantRepository _tenantRepository; - public TenantCacheItemInvalidator_Tests() + public TenantConfigurationCacheItemInvalidator_Tests() { - _cache = GetRequiredService>(); + _cache = GetRequiredService>(); _tenantStore = GetRequiredService(); _tenantRepository = GetRequiredService(); } @@ -25,27 +25,27 @@ public class TenantCacheItemInvalidator_Tests : AbpTenantManagementDomainTestBas var acme = await _tenantRepository.FindByNameAsync("acme"); acme.ShouldNotBeNull(); - (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(acme.Id, null))).ShouldBeNull(); - (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(null, acme.Name))).ShouldBeNull(); + (await _cache.GetAsync(TenantConfigurationCacheItem.CalculateCacheKey(acme.Id, null))).ShouldBeNull(); + (await _cache.GetAsync(TenantConfigurationCacheItem.CalculateCacheKey(null, acme.Name))).ShouldBeNull(); await _tenantStore.FindAsync(acme.Id); - (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(acme.Id, null))).ShouldNotBeNull(); + (await _cache.GetAsync(TenantConfigurationCacheItem.CalculateCacheKey(acme.Id, null))).ShouldNotBeNull(); await _tenantStore.FindAsync(acme.Name); - (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(null, acme.Name))).ShouldNotBeNull(); + (await _cache.GetAsync(TenantConfigurationCacheItem.CalculateCacheKey(null, acme.Name))).ShouldNotBeNull(); var volosoft = _tenantRepository.FindByName("volosoft"); volosoft.ShouldNotBeNull(); - (_cache.Get(TenantCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldBeNull(); - (_cache.Get(TenantCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldBeNull(); + (_cache.Get(TenantConfigurationCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldBeNull(); + (_cache.Get(TenantConfigurationCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldBeNull(); _tenantStore.Find(volosoft.Id); - (_cache.Get(TenantCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldNotBeNull(); + (_cache.Get(TenantConfigurationCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldNotBeNull(); _tenantStore.Find(volosoft.Name); - (_cache.Get(TenantCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldNotBeNull(); + (_cache.Get(TenantConfigurationCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldNotBeNull(); } [Fact] @@ -58,13 +58,13 @@ public class TenantCacheItemInvalidator_Tests : AbpTenantManagementDomainTestBas await _tenantStore.FindAsync(acme.Id); await _tenantStore.FindAsync(acme.Name); - (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(acme.Id, null))).ShouldNotBeNull(); - (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(null, acme.Name))).ShouldNotBeNull(); + (await _cache.GetAsync(TenantConfigurationCacheItem.CalculateCacheKey(acme.Id, null))).ShouldNotBeNull(); + (await _cache.GetAsync(TenantConfigurationCacheItem.CalculateCacheKey(null, acme.Name))).ShouldNotBeNull(); await _tenantRepository.DeleteAsync(acme); - (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(acme.Id, null))).ShouldBeNull(); - (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(null, acme.Name))).ShouldBeNull(); + (await _cache.GetAsync(TenantConfigurationCacheItem.CalculateCacheKey(acme.Id, null))).ShouldBeNull(); + (await _cache.GetAsync(TenantConfigurationCacheItem.CalculateCacheKey(null, acme.Name))).ShouldBeNull(); var volosoft = await _tenantRepository.FindByNameAsync("volosoft"); @@ -74,12 +74,12 @@ public class TenantCacheItemInvalidator_Tests : AbpTenantManagementDomainTestBas _tenantStore.Find(volosoft.Id); _tenantStore.Find(volosoft.Name); - (_cache.Get(TenantCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldNotBeNull(); - (_cache.Get(TenantCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldNotBeNull(); + (_cache.Get(TenantConfigurationCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldNotBeNull(); + (_cache.Get(TenantConfigurationCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldNotBeNull(); await _tenantRepository.DeleteAsync(volosoft); - (_cache.Get(TenantCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldBeNull(); - (_cache.Get(TenantCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldBeNull(); + (_cache.Get(TenantConfigurationCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldBeNull(); + (_cache.Get(TenantConfigurationCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldBeNull(); } }