From 9356884516bc86b75dd72139c3a98aafd25fb1f4 Mon Sep 17 00:00:00 2001 From: maliming Date: Sun, 3 Sep 2023 20:14:28 +0800 Subject: [PATCH] Rename `RepositoryInterceptor` and so on to `ChangeTrackingInterceptor`. --- .../Volo/Abp/Domain/AbpDddDomainModule.cs | 3 +- .../ChangeTrackingHelper.cs} | 5 +- .../ChangeTrackingInterceptor.cs} | 9 ++-- .../ChangeTrackingInterceptorRegistrar.cs} | 8 +-- .../DisableEntityChangeTrackingAttribute.cs | 4 +- .../EnableEntityChangeTrackingAttribute.cs | 4 +- .../EntityChangeTrackingAttribute.cs | 4 +- .../ChangeTrackingInterceptor_Tests.cs} | 49 ++----------------- 8 files changed, 23 insertions(+), 63 deletions(-) rename framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/{Repositories/RepositoryHelper.cs => ChangeTracking/ChangeTrackingHelper.cs} (93%) rename framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/{Repositories/RepositoryInterceptor.cs => ChangeTracking/ChangeTrackingInterceptor.cs} (61%) rename framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/{Repositories/RepositoryInterceptorRegistrar.cs => ChangeTracking/ChangeTrackingInterceptorRegistrar.cs} (54%) rename framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/{Repositories => ChangeTracking}/DisableEntityChangeTrackingAttribute.cs (83%) rename framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/{Repositories => ChangeTracking}/EnableEntityChangeTrackingAttribute.cs (83%) rename framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/{Repositories => ChangeTracking}/EntityChangeTrackingAttribute.cs (80%) rename framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/{Repositories/RepositoryInterceptor_Tests.cs => ChangeTracking/ChangeTrackingInterceptor_Tests.cs} (77%) diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs index 2e67c42820..de6632704d 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs @@ -2,6 +2,7 @@ using Volo.Abp.Auditing; using Volo.Abp.Caching; using Volo.Abp.Data; +using Volo.Abp.Domain.ChangeTracking; using Volo.Abp.Domain.Repositories; using Volo.Abp.EventBus; using Volo.Abp.ExceptionHandling; @@ -30,6 +31,6 @@ public class AbpDddDomainModule : AbpModule public override void PreConfigureServices(ServiceConfigurationContext context) { context.Services.AddConventionalRegistrar(new AbpRepositoryConventionalRegistrar()); - context.Services.OnRegistered(RepositoryInterceptorRegistrar.RegisterIfNeeded); + context.Services.OnRegistered(ChangeTrackingInterceptorRegistrar.RegisterIfNeeded); } } diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryHelper.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/ChangeTrackingHelper.cs similarity index 93% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryHelper.cs rename to framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/ChangeTrackingHelper.cs index 2c57dd9640..d2235afd22 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryHelper.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/ChangeTrackingHelper.cs @@ -1,10 +1,11 @@ using System.Linq; using System.Reflection; using JetBrains.Annotations; +using Volo.Abp.Domain.Repositories; -namespace Volo.Abp.Domain.Repositories; +namespace Volo.Abp.Domain.ChangeTracking; -public static class RepositoryHelper +public static class ChangeTrackingHelper { public static bool IsEntityChangeTrackingType(TypeInfo implementationType) { diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryInterceptor.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/ChangeTrackingInterceptor.cs similarity index 61% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryInterceptor.cs rename to framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/ChangeTrackingInterceptor.cs index e9727b932f..307e2dee6a 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryInterceptor.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/ChangeTrackingInterceptor.cs @@ -1,21 +1,22 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; using Volo.Abp.DynamicProxy; -namespace Volo.Abp.Domain.Repositories; +namespace Volo.Abp.Domain.ChangeTracking; -public class RepositoryInterceptor : AbpInterceptor, ITransientDependency +public class ChangeTrackingInterceptor : AbpInterceptor, ITransientDependency { private readonly IEntityChangeTrackingProvider _entityChangeTrackingProvider; - public RepositoryInterceptor(IEntityChangeTrackingProvider entityChangeTrackingProvider) + public ChangeTrackingInterceptor(IEntityChangeTrackingProvider entityChangeTrackingProvider) { _entityChangeTrackingProvider = entityChangeTrackingProvider; } public async override Task InterceptAsync(IAbpMethodInvocation invocation) { - if (!RepositoryHelper.IsEntityChangeTrackingMethod(invocation.Method, out var changeTrackingAttribute)) + if (!ChangeTrackingHelper.IsEntityChangeTrackingMethod(invocation.Method, out var changeTrackingAttribute)) { await invocation.ProceedAsync(); return; diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryInterceptorRegistrar.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/ChangeTrackingInterceptorRegistrar.cs similarity index 54% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryInterceptorRegistrar.cs rename to framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/ChangeTrackingInterceptorRegistrar.cs index 538fa72774..0249c570dd 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryInterceptorRegistrar.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/ChangeTrackingInterceptorRegistrar.cs @@ -3,20 +3,20 @@ using System.Reflection; using Volo.Abp.DependencyInjection; using Volo.Abp.DynamicProxy; -namespace Volo.Abp.Domain.Repositories; +namespace Volo.Abp.Domain.ChangeTracking; -public class RepositoryInterceptorRegistrar +public class ChangeTrackingInterceptorRegistrar { public static void RegisterIfNeeded(IOnServiceRegistredContext context) { if (ShouldIntercept(context.ImplementationType)) { - context.Interceptors.TryAdd(); + context.Interceptors.TryAdd(); } } private static bool ShouldIntercept(Type type) { - return !DynamicProxyIgnoreTypes.Contains(type) && RepositoryHelper.IsEntityChangeTrackingType(type.GetTypeInfo()); + return !DynamicProxyIgnoreTypes.Contains(type) && ChangeTrackingHelper.IsEntityChangeTrackingType(type.GetTypeInfo()); } } diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/DisableEntityChangeTrackingAttribute.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/DisableEntityChangeTrackingAttribute.cs similarity index 83% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/DisableEntityChangeTrackingAttribute.cs rename to framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/DisableEntityChangeTrackingAttribute.cs index 76a2bdeaa1..98011bda5f 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/DisableEntityChangeTrackingAttribute.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/DisableEntityChangeTrackingAttribute.cs @@ -1,11 +1,11 @@ using System; -namespace Volo.Abp.Domain.Repositories; +namespace Volo.Abp.Domain.ChangeTracking; /// /// Ensures that the change tracking in enabled for the given method or class. /// -[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Interface)] +[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] public class DisableEntityChangeTrackingAttribute : EntityChangeTrackingAttribute { public DisableEntityChangeTrackingAttribute() diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/EnableEntityChangeTrackingAttribute.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/EnableEntityChangeTrackingAttribute.cs similarity index 83% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/EnableEntityChangeTrackingAttribute.cs rename to framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/EnableEntityChangeTrackingAttribute.cs index 9765d3253f..542b60cd74 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/EnableEntityChangeTrackingAttribute.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/EnableEntityChangeTrackingAttribute.cs @@ -1,11 +1,11 @@ using System; -namespace Volo.Abp.Domain.Repositories; +namespace Volo.Abp.Domain.ChangeTracking; /// /// Ensures that the change tracking in enabled for the given method or class. /// -[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Interface)] +[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] public class EnableEntityChangeTrackingAttribute : EntityChangeTrackingAttribute { public EnableEntityChangeTrackingAttribute() diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/EntityChangeTrackingAttribute.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/EntityChangeTrackingAttribute.cs similarity index 80% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/EntityChangeTrackingAttribute.cs rename to framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/EntityChangeTrackingAttribute.cs index 3719cd3c0c..3446a49354 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/EntityChangeTrackingAttribute.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/ChangeTracking/EntityChangeTrackingAttribute.cs @@ -1,8 +1,8 @@ using System; -namespace Volo.Abp.Domain.Repositories; +namespace Volo.Abp.Domain.ChangeTracking; -[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Interface)] +[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] public abstract class EntityChangeTrackingAttribute : Attribute { public virtual bool IsEnabled { get; set; } diff --git a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Repositories/RepositoryInterceptor_Tests.cs b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/ChangeTracking/ChangeTrackingInterceptor_Tests.cs similarity index 77% rename from framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Repositories/RepositoryInterceptor_Tests.cs rename to framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/ChangeTracking/ChangeTrackingInterceptor_Tests.cs index 8230a6ec7e..87b487b68a 100644 --- a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Repositories/RepositoryInterceptor_Tests.cs +++ b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/ChangeTracking/ChangeTrackingInterceptor_Tests.cs @@ -4,14 +4,15 @@ using System.Linq; using System.Threading.Tasks; using Shouldly; using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.ChangeTracking; using Volo.Abp.Domain.Repositories; using Volo.Abp.TestApp.Domain; using Volo.Abp.TestApp.Testing; using Xunit; -namespace Volo.Abp.EntityFrameworkCore.Repositories; +namespace Volo.Abp.EntityFrameworkCore.ChangeTracking; -public class RepositoryInterceptor_Tests : TestAppTestBase +public class ChangeTrackingInterceptor_Tests : TestAppTestBase { [Fact] public async Task ReadOnly_Repository_Should_Not_Track_Entities() @@ -65,18 +66,6 @@ public class RepositoryInterceptor_Tests : TestAppTestBase - { - var service = GetRequiredService(); - var db = await repository.GetDbContextAsync(); - db.ChangeTracker.Entries().Count().ShouldBe(0); - - var list = await service.GetPeoplesAsync(); - list.Count.ShouldBeGreaterThan(0); - - db.ChangeTracker.Entries().Count().ShouldBe(1); // Track one entity from GetPeoplesAsync - }); - await WithUnitOfWorkAsync(async () => { var service = GetRequiredService(); @@ -163,38 +152,6 @@ public class MyServiceEnableEntityChangeTracking : ITransientDependency } } - -[EnableEntityChangeTracking] -public interface IMyServiceEnableEntityChangeTrackingOnInterface -{ - -} - -public class MyServiceEnableEntityChangeTrackingOnInterface : IMyServiceEnableEntityChangeTrackingOnInterface, ITransientDependency -{ - private readonly IRepository _repository; - - public MyServiceEnableEntityChangeTrackingOnInterface(IRepository repository) - { - _repository = repository; - } - - public virtual async Task> GetPeoplesAsync() - { - var p1 = await GetPeopleAsync(); - var p2 = await _repository.FindAsync(x => x.Name == "people2"); - - return new List {p1, p2}; - } - - [DisableEntityChangeTracking] - public virtual async Task GetPeopleAsync() - { - var p1 = await _repository.FindAsync(x => x.Name == "people1"); - return p1; - } -} - public class MyServiceChangeTrackingByEntityChangeTrackingProvider : ITransientDependency { private readonly IRepository _repository;