Browse Source

Merge IDistributedLocalizationStore into IExternalLocalizationStore

pull/13845/head
Halil İbrahim Kalkan 4 years ago
parent
commit
66238da304
  1. 11
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs
  2. 7
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationModule.cs
  3. 18
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/DistributedLocalizationData.cs
  4. 12
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/IDistributedLocalizationStore.cs
  5. 25
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/NullDistributedLocalizationStore.cs
  6. 6
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/AbpExternalLocalizationOptions.cs
  7. 18
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/ExternalLocalizationData.cs
  8. 6
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/ExternalLocalizationResourceData.cs
  9. 8
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/IExternalLocalizationStore.cs
  10. 20
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/NullExternalLocalizationStore.cs

11
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs

@ -18,6 +18,7 @@ using Volo.Abp.Features;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.Localization;
using Volo.Abp.Localization.Distributed;
using Volo.Abp.Localization.External;
using Volo.Abp.MultiTenancy;
using Volo.Abp.Settings;
using Volo.Abp.Timing;
@ -43,7 +44,7 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
private readonly ITimezoneProvider _timezoneProvider;
private readonly AbpClockOptions _abpClockOptions;
private readonly ICachedObjectExtensionsDtoService _cachedObjectExtensionsDtoService;
private readonly AbpDistributedLocalizationOptions _distributedLocalizationOptions;
private readonly AbpExternalLocalizationOptions _externalLocalizationOptions;
private readonly AbpApplicationConfigurationOptions _options;
public AbpApplicationConfigurationAppService(
@ -64,7 +65,7 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
IOptions<AbpClockOptions> abpClockOptions,
ICachedObjectExtensionsDtoService cachedObjectExtensionsDtoService,
IOptions<AbpApplicationConfigurationOptions> options,
IOptions<AbpDistributedLocalizationOptions> distributedLocalizationOptions)
IOptions<AbpExternalLocalizationOptions> distributedLocalizationOptions)
{
_serviceProvider = serviceProvider;
_abpAuthorizationPolicyProvider = abpAuthorizationPolicyProvider;
@ -80,7 +81,7 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
_timezoneProvider = timezoneProvider;
_abpClockOptions = abpClockOptions.Value;
_cachedObjectExtensionsDtoService = cachedObjectExtensionsDtoService;
_distributedLocalizationOptions = distributedLocalizationOptions.Value;
_externalLocalizationOptions = distributedLocalizationOptions.Value;
_options = options.Value;
_localizationOptions = localizationOptions.Value;
_multiTenancyOptions = multiTenancyOptions.Value;
@ -230,11 +231,11 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
localizationConfig.Values[resource.ResourceName] = dictionary;
}
if (_distributedLocalizationOptions.GetFromDistributedStore)
if (_externalLocalizationOptions.GetFromExternalStore)
{
var distributedLocalizationData = await this
.LazyServiceProvider
.LazyGetRequiredService<IDistributedLocalizationStore>()
.LazyGetRequiredService<IExternalLocalizationStore>()
.GetAsync();
foreach (var resource in distributedLocalizationData.Resources)

7
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationModule.cs

@ -8,6 +8,7 @@ using Microsoft.Extensions.Options;
using Polly;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Localization.Distributed;
using Volo.Abp.Localization.External;
using Volo.Abp.Localization.Resources.AbpLocalization;
using Volo.Abp.Modularity;
using Volo.Abp.Settings;
@ -63,10 +64,10 @@ public class AbpLocalizationModule : AbpModule
{
var options = context
.ServiceProvider
.GetRequiredService<IOptions<AbpDistributedLocalizationOptions>>()
.GetRequiredService<IOptions<AbpExternalLocalizationOptions>>()
.Value;
if (!options.SaveToDistributedStore)
if (!options.SaveToExternalStore)
{
return;
}
@ -99,7 +100,7 @@ public class AbpLocalizationModule : AbpModule
// ReSharper disable once AccessToDisposedClosure
await scope
.ServiceProvider
.GetRequiredService<IDistributedLocalizationStore>()
.GetRequiredService<IExternalLocalizationStore>()
.SaveAsync();
}
catch (Exception ex)

18
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/DistributedLocalizationData.cs

@ -1,18 +0,0 @@
using System.Collections.Generic;
namespace Volo.Abp.Localization.Distributed;
public class DistributedLocalizationData
{
public List<DistributedLocalizationResourceData> Resources { get; }
public DistributedLocalizationData()
{
Resources = new();
}
public DistributedLocalizationData(List<DistributedLocalizationResourceData> resources)
{
Resources = Check.NotNull(resources, nameof(resources));
}
}

12
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/IDistributedLocalizationStore.cs

@ -1,12 +0,0 @@
using System.Threading.Tasks;
namespace Volo.Abp.Localization.Distributed;
public interface IDistributedLocalizationStore
{
Task SaveAsync();
Task<DistributedLocalizationData> GetAsync();
Task<string[]> GetResourceNames();
}

25
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/NullDistributedLocalizationStore.cs

@ -1,25 +0,0 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Localization.Distributed;
public class NullDistributedLocalizationStore : IDistributedLocalizationStore, ISingletonDependency
{
private readonly DistributedLocalizationData _data = new();
public Task SaveAsync()
{
return Task.CompletedTask;
}
public Task<DistributedLocalizationData> GetAsync()
{
return Task.FromResult(_data);
}
public Task<string[]> GetResourceNames()
{
return Task.FromResult(Array.Empty<string>());
}
}

6
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/AbpDistributedLocalizationOptions.cs → framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/AbpExternalLocalizationOptions.cs

@ -1,14 +1,14 @@
namespace Volo.Abp.Localization.Distributed;
public class AbpDistributedLocalizationOptions
public class AbpExternalLocalizationOptions
{
/// <summary>
/// Default: true.
/// </summary>
public bool SaveToDistributedStore { get; set; } = true;
public bool SaveToExternalStore { get; set; } = true;
/// <summary>
/// Default: false.
/// </summary>
public bool GetFromDistributedStore { get; set; }
public bool GetFromExternalStore { get; set; }
}

18
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/ExternalLocalizationData.cs

@ -0,0 +1,18 @@
using System.Collections.Generic;
namespace Volo.Abp.Localization.Distributed;
public class ExternalLocalizationData
{
public List<ExternalLocalizationResourceData> Resources { get; }
public ExternalLocalizationData()
{
Resources = new();
}
public ExternalLocalizationData(List<ExternalLocalizationResourceData> resources)
{
Resources = Check.NotNull(resources, nameof(resources));
}
}

6
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/DistributedLocalizationResourceData.cs → framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/ExternalLocalizationResourceData.cs

@ -2,19 +2,19 @@ using System.Collections.Generic;
namespace Volo.Abp.Localization.Distributed;
public class DistributedLocalizationResourceData
public class ExternalLocalizationResourceData
{
public string ResourceName { get; }
public Dictionary<string, string> Texts { get; }
public DistributedLocalizationResourceData(string resourceName)
public ExternalLocalizationResourceData(string resourceName)
{
ResourceName = Check.NotNullOrWhiteSpace(resourceName, nameof(resourceName));
Texts = new();
}
public DistributedLocalizationResourceData(string resourceName, Dictionary<string, string> texts)
public ExternalLocalizationResourceData(string resourceName, Dictionary<string, string> texts)
{
ResourceName = Check.NotNullOrWhiteSpace(resourceName, nameof(resourceName));
Texts = Check.NotNull(texts, nameof(texts));

8
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/IExternalLocalizationStore.cs

@ -1,9 +1,17 @@
using System.Threading.Tasks;
using JetBrains.Annotations;
using Volo.Abp.Localization.Distributed;
namespace Volo.Abp.Localization.External;
public interface IExternalLocalizationStore
{
Task SaveAsync();
[CanBeNull]
LocalizationResourceBase GetResourceOrNull([NotNull] string resourceName);
Task<ExternalLocalizationData> GetAsync();
Task<string[]> GetResourceNames();
}

20
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/NullExternalLocalizationStore.cs

@ -1,11 +1,31 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Localization.Distributed;
namespace Volo.Abp.Localization.External;
public class NullExternalLocalizationStore : IExternalLocalizationStore, ISingletonDependency
{
private readonly ExternalLocalizationData _data = new();
public Task SaveAsync()
{
return Task.CompletedTask;
}
public LocalizationResourceBase GetResourceOrNull(string resourceName)
{
return null;
}
public Task<ExternalLocalizationData> GetAsync()
{
return Task.FromResult(_data);
}
public Task<string[]> GetResourceNames()
{
return Task.FromResult(Array.Empty<string>());
}
}
Loading…
Cancel
Save