diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureDynamicInitializer.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureDynamicInitializer.cs index 32ed4cb646..d96b7b3800 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureDynamicInitializer.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureDynamicInitializer.cs @@ -1,7 +1,6 @@ using System; using System.Threading; using System.Threading.Tasks; -using JetBrains.Annotations; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; @@ -19,33 +18,19 @@ public class FeatureDynamicInitializer : ITransientDependency public ILogger Logger { get; set; } protected IServiceProvider ServiceProvider { get; } - protected IOptions Options { get; } - [CanBeNull] - protected IHostApplicationLifetime ApplicationLifetime { get; } - protected ICancellationTokenProvider CancellationTokenProvider { get; } - protected IDynamicFeatureDefinitionStore DynamicFeatureDefinitionStore { get; } - protected IStaticFeatureSaver StaticFeatureSaver { get; } - - public FeatureDynamicInitializer( - IServiceProvider serviceProvider, - IOptions options, - ICancellationTokenProvider cancellationTokenProvider, - IDynamicFeatureDefinitionStore dynamicFeatureDefinitionStore, - IStaticFeatureSaver staticFeatureSaver) + + public FeatureDynamicInitializer(IServiceProvider serviceProvider) { Logger = NullLogger.Instance; ServiceProvider = serviceProvider; - Options = options; - ApplicationLifetime = ServiceProvider.GetService(); - CancellationTokenProvider = cancellationTokenProvider; - DynamicFeatureDefinitionStore = dynamicFeatureDefinitionStore; - StaticFeatureSaver = staticFeatureSaver; } public virtual Task InitializeAsync(bool runInBackground, CancellationToken cancellationToken = default) { - var options = Options.Value; + var options = ServiceProvider + .GetRequiredService>() + .Value; if (!options.SaveStaticFeaturesToDatabase && !options.IsDynamicFeatureStoreEnabled) { @@ -54,11 +39,12 @@ public class FeatureDynamicInitializer : ITransientDependency if (runInBackground) { + var applicationLifetime = ServiceProvider.GetService(); Task.Run(async () => { - if (cancellationToken == default && ApplicationLifetime?.ApplicationStopping != null) + if (cancellationToken == default && applicationLifetime?.ApplicationStopping != null) { - cancellationToken = ApplicationLifetime.ApplicationStopping; + cancellationToken = applicationLifetime.ApplicationStopping; } await ExecuteInitializationAsync(options, cancellationToken); }, cancellationToken); @@ -68,20 +54,23 @@ public class FeatureDynamicInitializer : ITransientDependency return ExecuteInitializationAsync(options, cancellationToken); } - protected virtual async Task ExecuteInitializationAsync(FeatureManagementOptions options, CancellationToken cancellationToken) + protected virtual async Task ExecuteInitializationAsync( + FeatureManagementOptions options, + CancellationToken cancellationToken) { try { - using (CancellationTokenProvider.Use(cancellationToken)) + var cancellationTokenProvider = ServiceProvider.GetRequiredService(); + using (cancellationTokenProvider.Use(cancellationToken)) { - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } await SaveStaticFeaturesToDatabaseAsync(options, cancellationToken); - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } @@ -104,6 +93,8 @@ public class FeatureDynamicInitializer : ITransientDependency return; } + var staticFeatureSaver = ServiceProvider.GetRequiredService(); + await Policy .Handle() .WaitAndRetryAsync( @@ -118,7 +109,7 @@ public class FeatureDynamicInitializer : ITransientDependency { try { - await StaticFeatureSaver.SaveAsync(); + await staticFeatureSaver.SaveAsync(); } catch (Exception ex) { @@ -128,17 +119,20 @@ public class FeatureDynamicInitializer : ITransientDependency }, cancellationToken); } - protected virtual async Task PreCacheDynamicFeaturesAsync(FeatureManagementOptions options) + protected virtual async Task PreCacheDynamicFeaturesAsync( + FeatureManagementOptions options) { if (!options.IsDynamicFeatureStoreEnabled) { return; } + var dynamicFeatureDefinitionStore = ServiceProvider.GetRequiredService(); + try { // Pre-cache features, so first request doesn't wait - await DynamicFeatureDefinitionStore.GetGroupsAsync(); + await dynamicFeatureDefinitionStore.GetGroupsAsync(); } catch (Exception ex) { diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDynamicInitializer.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDynamicInitializer.cs index 74bdf1821b..ef3cf355bb 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDynamicInitializer.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDynamicInitializer.cs @@ -1,7 +1,6 @@ using System; using System.Threading; using System.Threading.Tasks; -using JetBrains.Annotations; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; @@ -19,33 +18,19 @@ public class PermissionDynamicInitializer : ITransientDependency public ILogger Logger { get; set; } protected IServiceProvider ServiceProvider { get; } - protected IOptions Options { get; } - [CanBeNull] - protected IHostApplicationLifetime ApplicationLifetime { get; } - protected ICancellationTokenProvider CancellationTokenProvider { get; } - protected IDynamicPermissionDefinitionStore DynamicPermissionDefinitionStore { get; } - protected IStaticPermissionSaver StaticPermissionSaver { get; } - - public PermissionDynamicInitializer( - IServiceProvider serviceProvider, - IOptions options, - ICancellationTokenProvider cancellationTokenProvider, - IDynamicPermissionDefinitionStore dynamicPermissionDefinitionStore, - IStaticPermissionSaver staticPermissionSaver) + + public PermissionDynamicInitializer(IServiceProvider serviceProvider) { Logger = NullLogger.Instance; ServiceProvider = serviceProvider; - Options = options; - ApplicationLifetime = ServiceProvider.GetService(); - CancellationTokenProvider = cancellationTokenProvider; - DynamicPermissionDefinitionStore = dynamicPermissionDefinitionStore; - StaticPermissionSaver = staticPermissionSaver; } public virtual Task InitializeAsync(bool runInBackground, CancellationToken cancellationToken = default) { - var options = Options.Value; + var options = ServiceProvider + .GetRequiredService>() + .Value; if (!options.SaveStaticPermissionsToDatabase && !options.IsDynamicPermissionStoreEnabled) { @@ -54,11 +39,12 @@ public class PermissionDynamicInitializer : ITransientDependency if (runInBackground) { + var applicationLifetime = ServiceProvider.GetService(); Task.Run(async () => { - if (cancellationToken == default && ApplicationLifetime?.ApplicationStopping != null) + if (cancellationToken == default && applicationLifetime?.ApplicationStopping != null) { - cancellationToken = ApplicationLifetime.ApplicationStopping; + cancellationToken = applicationLifetime.ApplicationStopping; } await ExecuteInitializationAsync(options, cancellationToken); }, cancellationToken); @@ -68,20 +54,23 @@ public class PermissionDynamicInitializer : ITransientDependency return ExecuteInitializationAsync(options, cancellationToken); } - protected virtual async Task ExecuteInitializationAsync(PermissionManagementOptions options, CancellationToken cancellationToken) + protected virtual async Task ExecuteInitializationAsync( + PermissionManagementOptions options, + CancellationToken cancellationToken) { try { - using (CancellationTokenProvider.Use(cancellationToken)) + var cancellationTokenProvider = ServiceProvider.GetRequiredService(); + using (cancellationTokenProvider.Use(cancellationToken)) { - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } await SaveStaticPermissionsToDatabaseAsync(options, cancellationToken); - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } @@ -104,6 +93,8 @@ public class PermissionDynamicInitializer : ITransientDependency return; } + var staticPermissionSaver = ServiceProvider.GetRequiredService(); + await Policy .Handle() .WaitAndRetryAsync( @@ -118,7 +109,7 @@ public class PermissionDynamicInitializer : ITransientDependency { try { - await StaticPermissionSaver.SaveAsync(); + await staticPermissionSaver.SaveAsync(); } catch (Exception ex) { @@ -129,17 +120,20 @@ public class PermissionDynamicInitializer : ITransientDependency }, cancellationToken); } - protected virtual async Task PreCacheDynamicPermissionsAsync(PermissionManagementOptions options) + protected virtual async Task PreCacheDynamicPermissionsAsync( + PermissionManagementOptions options) { if (!options.IsDynamicPermissionStoreEnabled) { return; } + var dynamicPermissionDefinitionStore = ServiceProvider.GetRequiredService(); + try { // Pre-cache permissions, so first request doesn't wait - await DynamicPermissionDefinitionStore.GetGroupsAsync(); + await dynamicPermissionDefinitionStore.GetGroupsAsync(); } catch (Exception ex) { diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingDynamicInitializer.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingDynamicInitializer.cs index 41db669d9b..af9858353c 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingDynamicInitializer.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingDynamicInitializer.cs @@ -1,7 +1,6 @@ using System; using System.Threading; using System.Threading.Tasks; -using JetBrains.Annotations; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; @@ -19,33 +18,19 @@ public class SettingDynamicInitializer : ITransientDependency public ILogger Logger { get; set; } protected IServiceProvider ServiceProvider { get; } - protected IOptions Options { get; } - [CanBeNull] - protected IHostApplicationLifetime ApplicationLifetime { get; } - protected ICancellationTokenProvider CancellationTokenProvider { get; } - protected IDynamicSettingDefinitionStore DynamicSettingDefinitionStore { get; } - protected IStaticSettingSaver StaticSettingSaver { get; } - - public SettingDynamicInitializer( - IServiceProvider serviceProvider, - IOptions options, - ICancellationTokenProvider cancellationTokenProvider, - IDynamicSettingDefinitionStore dynamicSettingDefinitionStore, - IStaticSettingSaver staticSettingSaver) + + public SettingDynamicInitializer(IServiceProvider serviceProvider) { Logger = NullLogger.Instance; ServiceProvider = serviceProvider; - Options = options; - ApplicationLifetime = ServiceProvider.GetService(); - CancellationTokenProvider = cancellationTokenProvider; - DynamicSettingDefinitionStore = dynamicSettingDefinitionStore; - StaticSettingSaver = staticSettingSaver; } public virtual Task InitializeAsync(bool runInBackground, CancellationToken cancellationToken = default) { - var options = Options.Value; + var options = ServiceProvider + .GetRequiredService>() + .Value; if (!options.SaveStaticSettingsToDatabase && !options.IsDynamicSettingStoreEnabled) { @@ -54,11 +39,12 @@ public class SettingDynamicInitializer : ITransientDependency if (runInBackground) { + var applicationLifetime = ServiceProvider.GetService(); Task.Run(async () => { - if (cancellationToken == default && ApplicationLifetime?.ApplicationStopping != null) + if (cancellationToken == default && applicationLifetime?.ApplicationStopping != null) { - cancellationToken = ApplicationLifetime.ApplicationStopping; + cancellationToken = applicationLifetime.ApplicationStopping; } await ExecuteInitializationAsync(options, cancellationToken); }, cancellationToken); @@ -69,20 +55,23 @@ public class SettingDynamicInitializer : ITransientDependency return ExecuteInitializationAsync(options, cancellationToken); } - protected virtual async Task ExecuteInitializationAsync(SettingManagementOptions options, CancellationToken cancellationToken) + protected virtual async Task ExecuteInitializationAsync( + SettingManagementOptions options, + CancellationToken cancellationToken) { try { - using (CancellationTokenProvider.Use(cancellationToken)) + var cancellationTokenProvider = ServiceProvider.GetRequiredService(); + using (cancellationTokenProvider.Use(cancellationToken)) { - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } await SaveStaticSettingsToDatabaseAsync(options, cancellationToken); - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } @@ -105,6 +94,8 @@ public class SettingDynamicInitializer : ITransientDependency return; } + var staticSettingSaver = ServiceProvider.GetRequiredService(); + await Policy .Handle() .WaitAndRetryAsync( @@ -119,7 +110,7 @@ public class SettingDynamicInitializer : ITransientDependency { try { - await StaticSettingSaver.SaveAsync(); + await staticSettingSaver.SaveAsync(); } catch (Exception ex) { @@ -129,17 +120,20 @@ public class SettingDynamicInitializer : ITransientDependency }, cancellationToken); } - protected virtual async Task PreCacheDynamicSettingsAsync(SettingManagementOptions options) + protected virtual async Task PreCacheDynamicSettingsAsync( + SettingManagementOptions options) { if (!options.IsDynamicSettingStoreEnabled) { return; } + var dynamicSettingDefinitionStore = ServiceProvider.GetRequiredService(); + try { // Pre-cache settings, so first request doesn't wait - await DynamicSettingDefinitionStore.GetAllAsync(); + await dynamicSettingDefinitionStore.GetAllAsync(); } catch (Exception ex) {