mirror of https://github.com/abpframework/abp.git
4 changed files with 135 additions and 144 deletions
@ -1,6 +1,133 @@ |
|||
using JetBrains.Annotations; |
|||
using Microsoft.AspNetCore.Authorization; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Microsoft.Extensions.Localization; |
|||
using Microsoft.Extensions.Logging; |
|||
using Microsoft.Extensions.Logging.Abstractions; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Aspects; |
|||
using Volo.Abp.Auditing; |
|||
using Volo.Abp.Authorization; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Features; |
|||
using Volo.Abp.GlobalFeatures; |
|||
using Volo.Abp.Guids; |
|||
using Volo.Abp.Linq; |
|||
using Volo.Abp.Localization; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.ObjectMapping; |
|||
using Volo.Abp.Settings; |
|||
using Volo.Abp.Timing; |
|||
using Volo.Abp.Uow; |
|||
using Volo.Abp.Users; |
|||
using Volo.Abp.Validation; |
|||
|
|||
namespace Volo.Abp.Application.Services; |
|||
|
|||
public abstract class ApplicationService : ApplicationServiceBase |
|||
public abstract class ApplicationService : |
|||
IApplicationService, |
|||
IAvoidDuplicateCrossCuttingConcerns, |
|||
IValidationEnabled, |
|||
IUnitOfWorkEnabled, |
|||
IAuditingEnabled, |
|||
IGlobalFeatureCheckingEnabled, |
|||
ITransientDependency |
|||
{ |
|||
|
|||
} |
|||
public IAbpLazyServiceProvider LazyServiceProvider { get; set; } |
|||
|
|||
[Obsolete("Use LazyServiceProvider instead.")] |
|||
public IServiceProvider ServiceProvider { get; set; } |
|||
|
|||
public static string[] CommonPostfixes { get; set; } = { "AppService", "ApplicationService", "IntService", "IntegrationService", "Service" }; |
|||
|
|||
public List<string> AppliedCrossCuttingConcerns { get; } = new(); |
|||
|
|||
protected IUnitOfWorkManager UnitOfWorkManager => LazyServiceProvider.LazyGetRequiredService<IUnitOfWorkManager>(); |
|||
|
|||
protected IAsyncQueryableExecuter AsyncExecuter => LazyServiceProvider.LazyGetRequiredService<IAsyncQueryableExecuter>(); |
|||
|
|||
protected Type ObjectMapperContext { get; set; } |
|||
protected IObjectMapper ObjectMapper => LazyServiceProvider.LazyGetService<IObjectMapper>(provider => |
|||
ObjectMapperContext == null |
|||
? provider.GetRequiredService<IObjectMapper>() |
|||
: (IObjectMapper)provider.GetRequiredService(typeof(IObjectMapper<>).MakeGenericType(ObjectMapperContext))); |
|||
|
|||
protected IGuidGenerator GuidGenerator => LazyServiceProvider.LazyGetService<IGuidGenerator>(SimpleGuidGenerator.Instance); |
|||
|
|||
protected ILoggerFactory LoggerFactory => LazyServiceProvider.LazyGetRequiredService<ILoggerFactory>(); |
|||
|
|||
protected ICurrentTenant CurrentTenant => LazyServiceProvider.LazyGetRequiredService<ICurrentTenant>(); |
|||
|
|||
protected IDataFilter DataFilter => LazyServiceProvider.LazyGetRequiredService<IDataFilter>(); |
|||
|
|||
protected ICurrentUser CurrentUser => LazyServiceProvider.LazyGetRequiredService<ICurrentUser>(); |
|||
|
|||
protected ISettingProvider SettingProvider => LazyServiceProvider.LazyGetRequiredService<ISettingProvider>(); |
|||
|
|||
protected IClock Clock => LazyServiceProvider.LazyGetRequiredService<IClock>(); |
|||
|
|||
protected IAuthorizationService AuthorizationService => LazyServiceProvider.LazyGetRequiredService<IAuthorizationService>(); |
|||
|
|||
protected IFeatureChecker FeatureChecker => LazyServiceProvider.LazyGetRequiredService<IFeatureChecker>(); |
|||
|
|||
protected IStringLocalizerFactory StringLocalizerFactory => LazyServiceProvider.LazyGetRequiredService<IStringLocalizerFactory>(); |
|||
|
|||
protected IStringLocalizer L { |
|||
get { |
|||
if (_localizer == null) |
|||
{ |
|||
_localizer = CreateLocalizer(); |
|||
} |
|||
|
|||
return _localizer; |
|||
} |
|||
} |
|||
private IStringLocalizer _localizer; |
|||
|
|||
protected Type LocalizationResource { |
|||
get => _localizationResource; |
|||
set { |
|||
_localizationResource = value; |
|||
_localizer = null; |
|||
} |
|||
} |
|||
private Type _localizationResource = typeof(DefaultResource); |
|||
|
|||
protected IUnitOfWork CurrentUnitOfWork => UnitOfWorkManager?.Current; |
|||
|
|||
protected ILogger Logger => LazyServiceProvider.LazyGetService<ILogger>(provider => LoggerFactory?.CreateLogger(GetType().FullName) ?? NullLogger.Instance); |
|||
|
|||
/// <summary>
|
|||
/// Checks for given <paramref name="policyName"/>.
|
|||
/// Throws <see cref="AbpAuthorizationException"/> if given policy has not been granted.
|
|||
/// </summary>
|
|||
/// <param name="policyName">The policy name. This method does nothing if given <paramref name="policyName"/> is null or empty.</param>
|
|||
protected virtual async Task CheckPolicyAsync([CanBeNull] string policyName) |
|||
{ |
|||
if (string.IsNullOrEmpty(policyName)) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
await AuthorizationService.CheckAsync(policyName); |
|||
} |
|||
|
|||
protected virtual IStringLocalizer CreateLocalizer() |
|||
{ |
|||
if (LocalizationResource != null) |
|||
{ |
|||
return StringLocalizerFactory.Create(LocalizationResource); |
|||
} |
|||
|
|||
var localizer = StringLocalizerFactory.CreateDefaultOrNull(); |
|||
if (localizer == null) |
|||
{ |
|||
throw new AbpException($"Set {nameof(LocalizationResource)} or define the default localization resource type (by configuring the {nameof(AbpLocalizationOptions)}.{nameof(AbpLocalizationOptions.DefaultResourceType)}) to be able to use the {nameof(L)} object!"); |
|||
} |
|||
|
|||
return localizer; |
|||
} |
|||
} |
|||
|
|||
@ -1,133 +0,0 @@ |
|||
using JetBrains.Annotations; |
|||
using Microsoft.AspNetCore.Authorization; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Microsoft.Extensions.Localization; |
|||
using Microsoft.Extensions.Logging; |
|||
using Microsoft.Extensions.Logging.Abstractions; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Aspects; |
|||
using Volo.Abp.Auditing; |
|||
using Volo.Abp.Authorization; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Features; |
|||
using Volo.Abp.GlobalFeatures; |
|||
using Volo.Abp.Guids; |
|||
using Volo.Abp.Linq; |
|||
using Volo.Abp.Localization; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.ObjectMapping; |
|||
using Volo.Abp.Settings; |
|||
using Volo.Abp.Timing; |
|||
using Volo.Abp.Uow; |
|||
using Volo.Abp.Users; |
|||
using Volo.Abp.Validation; |
|||
|
|||
namespace Volo.Abp.Application.Services; |
|||
|
|||
public abstract class ApplicationServiceBase : |
|||
IApplicationService, |
|||
IAvoidDuplicateCrossCuttingConcerns, |
|||
IValidationEnabled, |
|||
IUnitOfWorkEnabled, |
|||
IAuditingEnabled, |
|||
IGlobalFeatureCheckingEnabled, |
|||
ITransientDependency |
|||
{ |
|||
public IAbpLazyServiceProvider LazyServiceProvider { get; set; } |
|||
|
|||
[Obsolete("Use LazyServiceProvider instead.")] |
|||
public IServiceProvider ServiceProvider { get; set; } |
|||
|
|||
public static string[] CommonPostfixes { get; set; } = { "AppService", "ApplicationService", "IntService", "IntegrationService", "Service" }; |
|||
|
|||
public List<string> AppliedCrossCuttingConcerns { get; } = new(); |
|||
|
|||
protected IUnitOfWorkManager UnitOfWorkManager => LazyServiceProvider.LazyGetRequiredService<IUnitOfWorkManager>(); |
|||
|
|||
protected IAsyncQueryableExecuter AsyncExecuter => LazyServiceProvider.LazyGetRequiredService<IAsyncQueryableExecuter>(); |
|||
|
|||
protected Type ObjectMapperContext { get; set; } |
|||
protected IObjectMapper ObjectMapper => LazyServiceProvider.LazyGetService<IObjectMapper>(provider => |
|||
ObjectMapperContext == null |
|||
? provider.GetRequiredService<IObjectMapper>() |
|||
: (IObjectMapper)provider.GetRequiredService(typeof(IObjectMapper<>).MakeGenericType(ObjectMapperContext))); |
|||
|
|||
protected IGuidGenerator GuidGenerator => LazyServiceProvider.LazyGetService<IGuidGenerator>(SimpleGuidGenerator.Instance); |
|||
|
|||
protected ILoggerFactory LoggerFactory => LazyServiceProvider.LazyGetRequiredService<ILoggerFactory>(); |
|||
|
|||
protected ICurrentTenant CurrentTenant => LazyServiceProvider.LazyGetRequiredService<ICurrentTenant>(); |
|||
|
|||
protected IDataFilter DataFilter => LazyServiceProvider.LazyGetRequiredService<IDataFilter>(); |
|||
|
|||
protected ICurrentUser CurrentUser => LazyServiceProvider.LazyGetRequiredService<ICurrentUser>(); |
|||
|
|||
protected ISettingProvider SettingProvider => LazyServiceProvider.LazyGetRequiredService<ISettingProvider>(); |
|||
|
|||
protected IClock Clock => LazyServiceProvider.LazyGetRequiredService<IClock>(); |
|||
|
|||
protected IAuthorizationService AuthorizationService => LazyServiceProvider.LazyGetRequiredService<IAuthorizationService>(); |
|||
|
|||
protected IFeatureChecker FeatureChecker => LazyServiceProvider.LazyGetRequiredService<IFeatureChecker>(); |
|||
|
|||
protected IStringLocalizerFactory StringLocalizerFactory => LazyServiceProvider.LazyGetRequiredService<IStringLocalizerFactory>(); |
|||
|
|||
protected IStringLocalizer L { |
|||
get { |
|||
if (_localizer == null) |
|||
{ |
|||
_localizer = CreateLocalizer(); |
|||
} |
|||
|
|||
return _localizer; |
|||
} |
|||
} |
|||
private IStringLocalizer _localizer; |
|||
|
|||
protected Type LocalizationResource { |
|||
get => _localizationResource; |
|||
set { |
|||
_localizationResource = value; |
|||
_localizer = null; |
|||
} |
|||
} |
|||
private Type _localizationResource = typeof(DefaultResource); |
|||
|
|||
protected IUnitOfWork CurrentUnitOfWork => UnitOfWorkManager?.Current; |
|||
|
|||
protected ILogger Logger => LazyServiceProvider.LazyGetService<ILogger>(provider => LoggerFactory?.CreateLogger(GetType().FullName) ?? NullLogger.Instance); |
|||
|
|||
/// <summary>
|
|||
/// Checks for given <paramref name="policyName"/>.
|
|||
/// Throws <see cref="AbpAuthorizationException"/> if given policy has not been granted.
|
|||
/// </summary>
|
|||
/// <param name="policyName">The policy name. This method does nothing if given <paramref name="policyName"/> is null or empty.</param>
|
|||
protected virtual async Task CheckPolicyAsync([CanBeNull] string policyName) |
|||
{ |
|||
if (string.IsNullOrEmpty(policyName)) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
await AuthorizationService.CheckAsync(policyName); |
|||
} |
|||
|
|||
protected virtual IStringLocalizer CreateLocalizer() |
|||
{ |
|||
if (LocalizationResource != null) |
|||
{ |
|||
return StringLocalizerFactory.Create(LocalizationResource); |
|||
} |
|||
|
|||
var localizer = StringLocalizerFactory.CreateDefaultOrNull(); |
|||
if (localizer == null) |
|||
{ |
|||
throw new AbpException($"Set {nameof(LocalizationResource)} or define the default localization resource type (by configuring the {nameof(AbpLocalizationOptions)}.{nameof(AbpLocalizationOptions.DefaultResourceType)}) to be able to use the {nameof(L)} object!"); |
|||
} |
|||
|
|||
return localizer; |
|||
} |
|||
} |
|||
@ -1,7 +0,0 @@ |
|||
namespace Volo.Abp.Application.Services; |
|||
|
|||
[IntegrationService] |
|||
public abstract class IntegrationService : ApplicationServiceBase |
|||
{ |
|||
|
|||
} |
|||
Loading…
Reference in new issue