Browse Source

Introduce ISettingValueProviderManager.

pull/1460/head
Halil İbrahim Kalkan 7 years ago
parent
commit
73ec92f3af
  1. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Modularity/IModuleLifecycleContributor.cs
  2. 8
      framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinitionManager.cs
  3. 2
      framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinitionProvider.cs
  4. 9
      framework/src/Volo.Abp.Settings/Volo/Abp/Settings/ISettingValueProviderManager.cs
  5. 30
      framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingProvider.cs
  6. 2
      framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingValueProvider.cs
  7. 32
      framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingValueProviderManager.cs

2
framework/src/Volo.Abp.Core/Volo/Abp/Modularity/IModuleLifecycleContributor.cs

@ -3,7 +3,7 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Modularity
{
public interface IModuleLifecycleContributor : ISingletonDependency
public interface IModuleLifecycleContributor : ITransientDependency
{
void Initialize([NotNull] ApplicationInitializationContext context, [NotNull] IAbpModule module);

8
framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinitionManager.cs

@ -18,13 +18,13 @@ namespace Volo.Abp.Features
protected FeatureOptions Options { get; }
private readonly IServiceProvider _serviceProvider;
private readonly IServiceScopeFactory _serviceScopeFactory;
public FeatureDefinitionManager(
IOptions<FeatureOptions> options,
IServiceProvider serviceProvider)
IServiceScopeFactory serviceScopeFactory)
{
_serviceProvider = serviceProvider;
_serviceScopeFactory = serviceScopeFactory;
Options = options.Value;
_lazyFeatureDefinitions = new Lazy<Dictionary<string, FeatureDefinition>>(
@ -98,7 +98,7 @@ namespace Volo.Abp.Features
{
var context = new FeatureDefinitionContext();
using (var scope = _serviceProvider.CreateScope())
using (var scope = _serviceScopeFactory.CreateScope())
{
var providers = Options
.DefinitionProviders

2
framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinitionProvider.cs

@ -2,7 +2,7 @@
namespace Volo.Abp.Features
{
public abstract class FeatureDefinitionProvider : IFeatureDefinitionProvider, ISingletonDependency
public abstract class FeatureDefinitionProvider : IFeatureDefinitionProvider, ITransientDependency
{
public abstract void Define(IFeatureDefinitionContext context);
}

9
framework/src/Volo.Abp.Settings/Volo/Abp/Settings/ISettingValueProviderManager.cs

@ -0,0 +1,9 @@
using System.Collections.Generic;
namespace Volo.Abp.Settings
{
public interface ISettingValueProviderManager
{
List<ISettingValueProvider> Providers { get; }
}
}

30
framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingProvider.cs

@ -1,9 +1,6 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Settings
@ -11,35 +8,24 @@ namespace Volo.Abp.Settings
public class SettingProvider : ISettingProvider, ITransientDependency
{
protected ISettingDefinitionManager SettingDefinitionManager { get; }
protected Lazy<List<ISettingValueProvider>> Providers { get; }
protected ISettingEncryptionService SettingEncryptionService { get; }
protected SettingOptions Options { get; }
protected ISettingValueProviderManager SettingValueProviderManager { get; }
public SettingProvider(
IOptions<SettingOptions> options,
IServiceProvider serviceProvider,
ISettingDefinitionManager settingDefinitionManager,
ISettingEncryptionService settingEncryptionService)
ISettingDefinitionManager settingDefinitionManager,
ISettingEncryptionService settingEncryptionService,
ISettingValueProviderManager settingValueProviderManager)
{
SettingDefinitionManager = settingDefinitionManager;
SettingEncryptionService = settingEncryptionService;
Options = options.Value;
Providers = new Lazy<List<ISettingValueProvider>>(
() => Options
.ValueProviders
.Select(type => serviceProvider.GetRequiredService(type) as ISettingValueProvider)
.ToList(),
true
);
SettingValueProviderManager = settingValueProviderManager;
}
public virtual async Task<string> GetOrNullAsync(string name)
{
var setting = SettingDefinitionManager.Get(name);
var providers = Enumerable
.Reverse(Providers.Value);
.Reverse(SettingValueProviderManager.Providers);
if (setting.Providers.Any())
{
@ -62,7 +48,7 @@ namespace Volo.Abp.Settings
var settingValues = new Dictionary<string, SettingValue>();
var settingDefinitions = SettingDefinitionManager.GetAll();
foreach (var provider in Providers.Value)
foreach (var provider in SettingValueProviderManager.Providers)
{
foreach (var setting in settingDefinitions)
{

2
framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingValueProvider.cs

@ -3,7 +3,7 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Settings
{
public abstract class SettingValueProvider : ISettingValueProvider, ISingletonDependency //TODO: to transient?
public abstract class SettingValueProvider : ISettingValueProvider, ITransientDependency
{
public abstract string Name { get; }

32
framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingValueProviderManager.cs

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Settings
{
public class SettingValueProviderManager : ISettingValueProviderManager, ISingletonDependency
{
public List<ISettingValueProvider> Providers => _lazyProviders.Value;
protected SettingOptions Options { get; }
private readonly Lazy<List<ISettingValueProvider>> _lazyProviders;
public SettingValueProviderManager(
IServiceProvider serviceProvider,
IOptions<SettingOptions> options)
{
Options = options.Value;
_lazyProviders = new Lazy<List<ISettingValueProvider>>(
() => Options
.ValueProviders
.Select(type => serviceProvider.GetRequiredService(type) as ISettingValueProvider)
.ToList(),
true
);
}
}
}
Loading…
Cancel
Save