Browse Source

Use IServiceProvider in Interceptors.

pull/6815/head
maliming 6 years ago
parent
commit
d3c4465121
  1. 19
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptor.cs
  2. 15
      framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureInterceptor.cs
  3. 16
      framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkInterceptor.cs
  4. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationInterceptor.cs

19
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptor.cs

@ -1,6 +1,7 @@
using System; using System;
using System.Diagnostics; using System.Diagnostics;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Aspects; using Volo.Abp.Aspects;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.DynamicProxy; using Volo.Abp.DynamicProxy;
@ -9,16 +10,14 @@ namespace Volo.Abp.Auditing
{ {
public class AuditingInterceptor : AbpInterceptor, ITransientDependency public class AuditingInterceptor : AbpInterceptor, ITransientDependency
{ {
private readonly IAuditingHelper _auditingHelper; private readonly IServiceProvider _serviceProvider;
private readonly IAuditingManager _auditingManager;
public AuditingInterceptor(IAuditingHelper auditingHelper, IAuditingManager auditingManager) public AuditingInterceptor(IServiceProvider serviceProvider)
{ {
_auditingHelper = auditingHelper; _serviceProvider = serviceProvider;
_auditingManager = auditingManager;
} }
public async override Task InterceptAsync(IAbpMethodInvocation invocation) public override async Task InterceptAsync(IAbpMethodInvocation invocation)
{ {
if (!ShouldIntercept(invocation, out var auditLog, out var auditLogAction)) if (!ShouldIntercept(invocation, out var auditLog, out var auditLogAction))
{ {
@ -58,19 +57,21 @@ namespace Volo.Abp.Auditing
return false; return false;
} }
var auditLogScope = _auditingManager.Current; var auditingManager = _serviceProvider.GetRequiredService<IAuditingManager>();
var auditLogScope = auditingManager.Current;
if (auditLogScope == null) if (auditLogScope == null)
{ {
return false; return false;
} }
if (!_auditingHelper.ShouldSaveAudit(invocation.Method)) var auditingHelper = _serviceProvider.GetRequiredService<IAuditingHelper>();
if (!auditingHelper.ShouldSaveAudit(invocation.Method))
{ {
return false; return false;
} }
auditLog = auditLogScope.Log; auditLog = auditLogScope.Log;
auditLogAction = _auditingHelper.CreateAuditLogAction( auditLogAction = auditingHelper.CreateAuditLogAction(
auditLog, auditLog,
invocation.TargetObject.GetType(), invocation.TargetObject.GetType(),
invocation.Method, invocation.Method,

15
framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureInterceptor.cs

@ -1,4 +1,6 @@
using System.Threading.Tasks; using System;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Aspects; using Volo.Abp.Aspects;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.DynamicProxy; using Volo.Abp.DynamicProxy;
@ -7,15 +9,14 @@ namespace Volo.Abp.Features
{ {
public class FeatureInterceptor : AbpInterceptor, ITransientDependency public class FeatureInterceptor : AbpInterceptor, ITransientDependency
{ {
private readonly IMethodInvocationFeatureCheckerService _methodInvocationFeatureCheckerService; private readonly IServiceProvider _serviceProvider;
public FeatureInterceptor( public FeatureInterceptor(IServiceProvider serviceProvider)
IMethodInvocationFeatureCheckerService methodInvocationFeatureCheckerService)
{ {
_methodInvocationFeatureCheckerService = methodInvocationFeatureCheckerService; _serviceProvider = serviceProvider;
} }
public async override Task InterceptAsync(IAbpMethodInvocation invocation) public override async Task InterceptAsync(IAbpMethodInvocation invocation)
{ {
if (AbpCrossCuttingConcerns.IsApplied(invocation.TargetObject, AbpCrossCuttingConcerns.FeatureChecking)) if (AbpCrossCuttingConcerns.IsApplied(invocation.TargetObject, AbpCrossCuttingConcerns.FeatureChecking))
{ {
@ -29,7 +30,7 @@ namespace Volo.Abp.Features
protected virtual async Task CheckFeaturesAsync(IAbpMethodInvocation invocation) protected virtual async Task CheckFeaturesAsync(IAbpMethodInvocation invocation)
{ {
await _methodInvocationFeatureCheckerService.CheckAsync( await _serviceProvider.GetRequiredService<IMethodInvocationFeatureCheckerService>().CheckAsync(
new MethodInvocationFeatureCheckerContext( new MethodInvocationFeatureCheckerContext(
invocation.Method invocation.Method
) )

16
framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkInterceptor.cs

@ -1,6 +1,7 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using JetBrains.Annotations; using JetBrains.Annotations;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.DynamicProxy; using Volo.Abp.DynamicProxy;
@ -9,16 +10,14 @@ namespace Volo.Abp.Uow
{ {
public class UnitOfWorkInterceptor : AbpInterceptor, ITransientDependency public class UnitOfWorkInterceptor : AbpInterceptor, ITransientDependency
{ {
private readonly IUnitOfWorkManager _unitOfWorkManager; private readonly IServiceProvider _serviceProvider;
private readonly AbpUnitOfWorkDefaultOptions _defaultOptions;
public UnitOfWorkInterceptor(IUnitOfWorkManager unitOfWorkManager, IOptions<AbpUnitOfWorkDefaultOptions> options) public UnitOfWorkInterceptor(IServiceProvider serviceProvider)
{ {
_unitOfWorkManager = unitOfWorkManager; _serviceProvider = serviceProvider;
_defaultOptions = options.Value;
} }
public async override Task InterceptAsync(IAbpMethodInvocation invocation) public override async Task InterceptAsync(IAbpMethodInvocation invocation)
{ {
if (!UnitOfWorkHelper.IsUnitOfWorkMethod(invocation.Method, out var unitOfWorkAttribute)) if (!UnitOfWorkHelper.IsUnitOfWorkMethod(invocation.Method, out var unitOfWorkAttribute))
{ {
@ -26,7 +25,7 @@ namespace Volo.Abp.Uow
return; return;
} }
using (var uow = _unitOfWorkManager.Begin(CreateOptions(invocation, unitOfWorkAttribute))) using (var uow = _serviceProvider.GetRequiredService<IUnitOfWorkManager>().Begin(CreateOptions(invocation, unitOfWorkAttribute)))
{ {
await invocation.ProceedAsync(); await invocation.ProceedAsync();
await uow.CompleteAsync(); await uow.CompleteAsync();
@ -41,7 +40,8 @@ namespace Volo.Abp.Uow
if (unitOfWorkAttribute?.IsTransactional == null) if (unitOfWorkAttribute?.IsTransactional == null)
{ {
options.IsTransactional = _defaultOptions.CalculateIsTransactional( var defaultOptions = _serviceProvider.GetRequiredService<IOptions<AbpUnitOfWorkDefaultOptions>>().Value;
options.IsTransactional = defaultOptions.CalculateIsTransactional(
autoValue: !invocation.Method.Name.StartsWith("Get", StringComparison.InvariantCultureIgnoreCase) autoValue: !invocation.Method.Name.StartsWith("Get", StringComparison.InvariantCultureIgnoreCase)
); );
} }

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationInterceptor.cs

@ -13,7 +13,7 @@ namespace Volo.Abp.Validation
_methodInvocationValidator = methodInvocationValidator; _methodInvocationValidator = methodInvocationValidator;
} }
public async override Task InterceptAsync(IAbpMethodInvocation invocation) public override async Task InterceptAsync(IAbpMethodInvocation invocation)
{ {
Validate(invocation); Validate(invocation);
await invocation.ProceedAsync(); await invocation.ProceedAsync();

Loading…
Cancel
Save