@if (!Model.HasAnyResourcePermission)
diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementEntityFrameworkCoreTestModule.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementEntityFrameworkCoreTestModule.cs
index 1e483fe1aa..7db8f8fe7e 100644
--- a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementEntityFrameworkCoreTestModule.cs
+++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementEntityFrameworkCoreTestModule.cs
@@ -9,6 +9,7 @@ using Volo.Abp.Modularity;
using Volo.Abp.Threading;
using Volo.Abp.Uow;
using Microsoft.Data.Sqlite;
+using Volo.Abp.DependencyInjection;
namespace Volo.Abp.PermissionManagement.EntityFrameworkCore;
@@ -56,18 +57,10 @@ public class AbpPermissionManagementEntityFrameworkCoreTestModule : AbpModule
return connection;
}
-
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
- var task = context.ServiceProvider.GetRequiredService
().GetInitializeDynamicPermissionsTask();
- if (!task.IsCompleted)
- {
- AsyncHelper.RunSync(() => Awaited(task));
- }
- }
-
- private async static Task Awaited(Task task)
- {
- await task;
+ var rootServiceProvider = context.ServiceProvider.GetRequiredService();
+ var initializer = rootServiceProvider.GetRequiredService();
+ AsyncHelper.RunSync(() => initializer.InitializeAsync(false));
}
}
diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/AbpSettingManagementDomainModule.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/AbpSettingManagementDomainModule.cs
index c3cd35daef..a5d2ba832e 100644
--- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/AbpSettingManagementDomainModule.cs
+++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/AbpSettingManagementDomainModule.cs
@@ -25,7 +25,6 @@ namespace Volo.Abp.SettingManagement;
public class AbpSettingManagementDomainModule : AbpModule
{
private readonly CancellationTokenSource _cancellationTokenSource = new();
- private Task _initializeDynamicSettingsTask;
public override void ConfigureServices(ServiceConfigurationContext context)
{
@@ -58,7 +57,6 @@ public class AbpSettingManagementDomainModule : AbpModule
var rootServiceProvider = context.ServiceProvider.GetRequiredService();
var initializer = rootServiceProvider.GetRequiredService();
await initializer.InitializeAsync(true, _cancellationTokenSource.Token);
- _initializeDynamicSettingsTask = initializer.GetInitializationTask();
}
public override Task OnApplicationShutdownAsync(ApplicationShutdownContext context)
@@ -66,9 +64,4 @@ public class AbpSettingManagementDomainModule : AbpModule
_cancellationTokenSource.Cancel();
return Task.CompletedTask;
}
-
- public Task GetInitializeDynamicSettingsTask()
- {
- return _initializeDynamicSettingsTask ?? Task.CompletedTask;
- }
}
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 6f388c8de8..41db669d9b 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
@@ -16,8 +16,6 @@ namespace Volo.Abp.SettingManagement;
public class SettingDynamicInitializer : ITransientDependency
{
- private Task _initializeDynamicSettingsTask;
-
public ILogger Logger { get; set; }
protected IServiceProvider ServiceProvider { get; }
@@ -56,7 +54,7 @@ public class SettingDynamicInitializer : ITransientDependency
if (runInBackground)
{
- _initializeDynamicSettingsTask = Task.Run(async () =>
+ Task.Run(async () =>
{
if (cancellationToken == default && ApplicationLifetime?.ApplicationStopping != null)
{
@@ -68,13 +66,7 @@ public class SettingDynamicInitializer : ITransientDependency
return Task.CompletedTask;
}
- _initializeDynamicSettingsTask = ExecuteInitializationAsync(options, cancellationToken);
- return _initializeDynamicSettingsTask;
- }
-
- public virtual Task GetInitializationTask()
- {
- return _initializeDynamicSettingsTask ?? Task.CompletedTask;
+ return ExecuteInitializationAsync(options, cancellationToken);
}
protected virtual async Task ExecuteInitializationAsync(SettingManagementOptions options, CancellationToken cancellationToken)
diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManager_Basic_Tests.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManager_Basic_Tests.cs
index ca9db64c70..95691f53a9 100644
--- a/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManager_Basic_Tests.cs
+++ b/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManager_Basic_Tests.cs
@@ -18,11 +18,10 @@ public class SettingManager_Basic_Tests : SettingsTestBase
}
[Fact]
- public async Task Should_Throw_Exception_When_Try_To_Get_An_Undefined_Setting()
+ public async Task Should_Return_Null_When_Try_To_Get_An_Undefined_Setting()
{
- await Assert.ThrowsAsync(
- async () => await _settingProvider.GetOrNullAsync("UndefinedSetting")
- );
+ var value = await _settingProvider.GetOrNullAsync("UndefinedSetting");
+ value.ShouldBeNull();
}
[Fact]
@@ -64,7 +63,7 @@ public class SettingManager_Basic_Tests : SettingsTestBase
(await _settingManager.GetOrNullGlobalAsync("MySetting1")).ShouldBe("43");
(await _settingProvider.GetOrNullAsync("MySetting1")).ShouldBe("43");
}
-
+
[Fact]
public async Task Set_Should_Throw_Exception_If_Provider_Not_Found()
{
@@ -72,7 +71,7 @@ public class SettingManager_Basic_Tests : SettingsTestBase
{
await _settingManager.SetAsync("MySetting1", "43", "UndefinedProvider", "Test");
});
-
+
exception.Message.ShouldBe("Unknown setting value provider: UndefinedProvider");
}
-}
\ No newline at end of file
+}
diff --git a/text-template-management/src/Volo.Abp.TextTemplateManagement.Domain/Volo/Abp/TextTemplateManagement/StaticTemplateDefinitionChangedEventHandler.cs b/text-template-management/src/Volo.Abp.TextTemplateManagement.Domain/Volo/Abp/TextTemplateManagement/StaticTemplateDefinitionChangedEventHandler.cs
new file mode 100644
index 0000000000..86b498ed90
--- /dev/null
+++ b/text-template-management/src/Volo.Abp.TextTemplateManagement.Domain/Volo/Abp/TextTemplateManagement/StaticTemplateDefinitionChangedEventHandler.cs
@@ -0,0 +1,32 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.EventBus;
+using Volo.Abp.StaticDefinitions;
+using Volo.Abp.TextTemplating;
+using Volo.Abp.Threading;
+
+namespace Volo.Abp.TextTemplateManagement;
+
+public class StaticTemplateDefinitionChangedEventHandler : ILocalEventHandler, ITransientDependency
+{
+ protected IStaticDefinitionCache> DefinitionCache { get; }
+ protected TextTemplateDynamicInitializer TextTemplateDynamicInitializer { get; }
+ protected ICancellationTokenProvider CancellationTokenProvider { get; }
+
+ public StaticTemplateDefinitionChangedEventHandler(
+ IStaticDefinitionCache> definitionCache,
+ TextTemplateDynamicInitializer textTemplateDynamicInitializer,
+ ICancellationTokenProvider cancellationTokenProvider)
+ {
+ DefinitionCache = definitionCache;
+ TextTemplateDynamicInitializer = textTemplateDynamicInitializer;
+ CancellationTokenProvider = cancellationTokenProvider;
+ }
+
+ public virtual async Task HandleEventAsync(StaticTemplateDefinitionChangedEvent eventData)
+ {
+ await DefinitionCache.ClearAsync();
+ await TextTemplateDynamicInitializer.InitializeAsync(false, CancellationTokenProvider.Token);
+ }
+}