From f44d7e12b9127cf7df0d90807ff350652e96fdd0 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 15 May 2020 12:08:02 +0200 Subject: [PATCH] Wrapping AutoMapper (#309) * Wrapping AutoMapper --- .../Converters/TypeNameHandlingConverter.cs | 4 -- .../Elsa.Abstractions.csproj | 1 + .../Elsa.Abstractions/Services/IMapper.cs | 12 ++++++ .../Services/MappingProfile.cs | 8 ++++ .../AutoMapperServiceCollectionExtensions.cs | 40 ------------------- .../ElsaServiceCollectionExtensions.cs | 3 +- .../MapperServiceCollectionExtensions.cs | 29 ++++++++++++++ src/core/Elsa.Core/Mapping/NodaTimeProfile.cs | 5 ++- .../Mapping/WorkflowDefinitionProfile.cs | 4 +- .../Runtime/StartupRunnerHostedService.cs | 2 - .../Elsa.Core/Services/AutoMapperMapper.cs | 32 +++++++++++++++ .../Elsa.Core/Services/WorkflowPublisher.cs | 1 - .../Elsa/ElsaServiceCollectionExtensions.cs | 1 - .../DashboardServiceCollectionExtensions.cs | 4 +- .../ServiceConfigurationExtensions.cs | 7 ++-- .../Mapping/DocumentProfile.cs | 4 +- .../CosmosDbWorkflowDefinitionStore.cs | 2 +- .../Services/CosmosDbWorkflowInstanceStore.cs | 2 +- .../DbContexts/ElsaContext.cs | 1 - .../EFCoreServiceCollectionExtensions.cs | 7 ++-- .../Mapping/EntitiesProfile.cs | 3 +- .../MySql/MySqlContextModelSnapshot.cs | 1 - .../PostgreSqlContextModelSnapshot.cs | 1 - .../SqlServerContextModelSnapshot.cs | 1 - .../Sqlite/SqliteContextModelSnapshot.cs | 1 - ...ityFrameworkCoreWorkflowDefinitionStore.cs | 2 +- ...ntityFrameworkCoreWorkflowInstanceStore.cs | 2 +- .../YesSqlServiceCollectionExtensions.cs | 7 ++-- .../Mapping/DocumentProfile.cs | 4 +- .../Services/YesSqlWorkflowDefinitionStore.cs | 2 +- .../Services/YesSqlWorkflowInstanceStore.cs | 10 ++--- .../StartupTasks/InitializeStoreTask.cs | 1 - src/samples/Sample04/Program.cs | 1 - src/samples/Sample07/Startup.cs | 1 - src/samples/Sample08/Startup.cs | 1 - src/samples/Sample14/ElsaContextFactory.cs | 1 - .../Migrations/ElsaContextModelSnapshot.cs | 1 - src/samples/Sample14/Program.cs | 1 - src/samples/Sample18/Program.cs | 1 - .../Sample20/Workflows/SplitObjectWorkflow.cs | 4 +- src/samples/Sample21/Startup.cs | 1 - src/samples/Sample22/Program.cs | 2 - src/samples/Sample23/ElsaContextFactory.cs | 1 - src/samples/Sample23/HelloWorldWorkflow.cs | 1 + .../Migrations/ElsaContextModelSnapshot.cs | 1 - src/samples/Sample23/Program.cs | 2 - .../DateTimeScriptEngineConfigurator.cs | 1 - .../Services/JavaScriptExpressionEvaluator.cs | 3 -- 48 files changed, 117 insertions(+), 110 deletions(-) create mode 100644 src/core/Elsa.Abstractions/Services/IMapper.cs create mode 100644 src/core/Elsa.Abstractions/Services/MappingProfile.cs delete mode 100644 src/core/Elsa.Core/Extensions/AutoMapperServiceCollectionExtensions.cs create mode 100644 src/core/Elsa.Core/Extensions/MapperServiceCollectionExtensions.cs create mode 100644 src/core/Elsa.Core/Services/AutoMapperMapper.cs diff --git a/src/core/Elsa.Abstractions/Converters/TypeNameHandlingConverter.cs b/src/core/Elsa.Abstractions/Converters/TypeNameHandlingConverter.cs index af9c38b97..d1db7bd3d 100644 --- a/src/core/Elsa.Abstractions/Converters/TypeNameHandlingConverter.cs +++ b/src/core/Elsa.Abstractions/Converters/TypeNameHandlingConverter.cs @@ -2,12 +2,8 @@ using System.Collections.Generic; using System.Linq; using Elsa.Serialization.Handlers; -using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using NodaTime; -using NodaTime.Serialization.JsonNet; -using NodaTime.Text; namespace Elsa.Converters { diff --git a/src/core/Elsa.Abstractions/Elsa.Abstractions.csproj b/src/core/Elsa.Abstractions/Elsa.Abstractions.csproj index cb7f8b8fe..70ef84ca3 100644 --- a/src/core/Elsa.Abstractions/Elsa.Abstractions.csproj +++ b/src/core/Elsa.Abstractions/Elsa.Abstractions.csproj @@ -26,6 +26,7 @@ + diff --git a/src/core/Elsa.Abstractions/Services/IMapper.cs b/src/core/Elsa.Abstractions/Services/IMapper.cs new file mode 100644 index 000000000..9e43058c2 --- /dev/null +++ b/src/core/Elsa.Abstractions/Services/IMapper.cs @@ -0,0 +1,12 @@ +namespace Elsa.Services +{ + /// + /// Maps source values to destination values. + /// + public interface IMapper + { + TDestination Map(TSource source); + TDestination Map(TSource source, TDestination destination); + TDestination Map(object source); + } +} \ No newline at end of file diff --git a/src/core/Elsa.Abstractions/Services/MappingProfile.cs b/src/core/Elsa.Abstractions/Services/MappingProfile.cs new file mode 100644 index 000000000..7639fa738 --- /dev/null +++ b/src/core/Elsa.Abstractions/Services/MappingProfile.cs @@ -0,0 +1,8 @@ +using AutoMapper; + +namespace Elsa.Services +{ + public abstract class MappingProfile : Profile + { + } +} \ No newline at end of file diff --git a/src/core/Elsa.Core/Extensions/AutoMapperServiceCollectionExtensions.cs b/src/core/Elsa.Core/Extensions/AutoMapperServiceCollectionExtensions.cs deleted file mode 100644 index 7a440cb40..000000000 --- a/src/core/Elsa.Core/Extensions/AutoMapperServiceCollectionExtensions.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using AutoMapper; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.DependencyInjection.Extensions; - -namespace Elsa.Extensions -{ - public static class AutoMapperServiceCollectionExtensions - { - public static IServiceCollection AddAutoMapper(this IServiceCollection services, ServiceLifetime lifetime) - { - services.TryAddSingleton(CreateConfigurationProvider); - services.TryAdd(new ServiceDescriptor(typeof(IMapper), sp => sp.GetRequiredService().CreateMapper(sp.GetService), lifetime)); - - return services; - } - - public static IServiceCollection AddAutoMapperProfile(this IServiceCollection services, ServiceLifetime lifetime) where TProfile : Profile - { - services.AddAutoMapper(lifetime); - services.TryAddProvider(lifetime); - return services; - } - - private static IConfigurationProvider CreateConfigurationProvider(IServiceProvider serviceProvider) - { - var profiles = serviceProvider.GetServices(); - - var configuration = new MapperConfiguration( - x => - { - foreach (var profile in profiles) - x.AddProfile(profile); - } - ); - - return configuration; - } - } -} \ No newline at end of file diff --git a/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs b/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs index ab651ceea..45323ead4 100644 --- a/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs +++ b/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using Elsa; using Elsa.Activities; -using Elsa.AutoMapper.Extensions; using Elsa.Caching; using Elsa.Expressions; using Elsa.Extensions; @@ -88,7 +87,7 @@ namespace Microsoft.Extensions.DependencyInjection .AddTransient() .AddTransient() .AddTransient>(sp => sp.GetRequiredService) - .AddAutoMapperProfile(ServiceLifetime.Singleton) + .AddMapperProfile(ServiceLifetime.Singleton) .AddPrimitiveActivities(); return configuration; diff --git a/src/core/Elsa.Core/Extensions/MapperServiceCollectionExtensions.cs b/src/core/Elsa.Core/Extensions/MapperServiceCollectionExtensions.cs new file mode 100644 index 000000000..0266f3099 --- /dev/null +++ b/src/core/Elsa.Core/Extensions/MapperServiceCollectionExtensions.cs @@ -0,0 +1,29 @@ +using System; +using Elsa.Services; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; + +namespace Elsa.Extensions +{ + public static class MapperServiceCollectionExtensions + { + public static IServiceCollection AddMapper(this IServiceCollection services, ServiceLifetime lifetime) + { + services.TryAddSingleton(CreateMapper); + return services; + } + + public static IServiceCollection AddMapperProfile(this IServiceCollection services, ServiceLifetime lifetime) where TProfile : MappingProfile + { + services.AddMapper(lifetime); + services.TryAddProvider(lifetime); + return services; + } + + private static IMapper CreateMapper(IServiceProvider services) + { + var profiles = services.GetServices(); + return new AutoMapperMapper(profiles); + } + } +} \ No newline at end of file diff --git a/src/core/Elsa.Core/Mapping/NodaTimeProfile.cs b/src/core/Elsa.Core/Mapping/NodaTimeProfile.cs index 478b79cd9..91b885206 100644 --- a/src/core/Elsa.Core/Mapping/NodaTimeProfile.cs +++ b/src/core/Elsa.Core/Mapping/NodaTimeProfile.cs @@ -1,10 +1,11 @@ using System; using AutoMapper; +using Elsa.Services; using NodaTime; -namespace Elsa.AutoMapper.Extensions.NodaTime +namespace Elsa.Mapping { - public class NodaTimeProfile : Profile, + public class NodaTimeProfile : MappingProfile, ITypeConverter, ITypeConverter, ITypeConverter, diff --git a/src/core/Elsa.Core/Mapping/WorkflowDefinitionProfile.cs b/src/core/Elsa.Core/Mapping/WorkflowDefinitionProfile.cs index eb97b9cd3..7e1e07806 100644 --- a/src/core/Elsa.Core/Mapping/WorkflowDefinitionProfile.cs +++ b/src/core/Elsa.Core/Mapping/WorkflowDefinitionProfile.cs @@ -1,9 +1,9 @@ -using AutoMapper; using Elsa.Models; +using Elsa.Services; namespace Elsa.Mapping { - public class WorkflowDefinitionProfile : Profile + public sealed class WorkflowDefinitionProfile : MappingProfile { public WorkflowDefinitionProfile() { diff --git a/src/core/Elsa.Core/Runtime/StartupRunnerHostedService.cs b/src/core/Elsa.Core/Runtime/StartupRunnerHostedService.cs index b0615a022..905e0d69c 100644 --- a/src/core/Elsa.Core/Runtime/StartupRunnerHostedService.cs +++ b/src/core/Elsa.Core/Runtime/StartupRunnerHostedService.cs @@ -1,7 +1,5 @@ using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting.Server; -using Microsoft.AspNetCore.Http.Features; using Microsoft.Extensions.Hosting; namespace Elsa.Runtime diff --git a/src/core/Elsa.Core/Services/AutoMapperMapper.cs b/src/core/Elsa.Core/Services/AutoMapperMapper.cs new file mode 100644 index 000000000..060e5dfe0 --- /dev/null +++ b/src/core/Elsa.Core/Services/AutoMapperMapper.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; +using AutoMapper; + +namespace Elsa.Services +{ + /// + /// A Mapper implementation that uses AutoMapper. + /// Using a privately constructed AutoMapper.IMapper instance prevents collisions with other frameworks such as ABP. + /// See https://github.com/elsa-workflows/elsa-core/issues/290 + /// + public class AutoMapperMapper : IMapper + { + private readonly AutoMapper.IMapper mapper; + + public AutoMapperMapper(IEnumerable profiles) + { + var configuration = new MapperConfiguration( + x => + { + foreach (var profile in profiles) + x.AddProfile(profile); + } + ); + + mapper = configuration.CreateMapper(); + } + + public TDestination Map(TSource source) => mapper.Map(source); + public TDestination Map(TSource source, TDestination destination) => mapper.Map(source, destination); + public TDestination Map(object source) => mapper.Map(source); + } +} \ No newline at end of file diff --git a/src/core/Elsa.Core/Services/WorkflowPublisher.cs b/src/core/Elsa.Core/Services/WorkflowPublisher.cs index de3962b95..2d99610fe 100644 --- a/src/core/Elsa.Core/Services/WorkflowPublisher.cs +++ b/src/core/Elsa.Core/Services/WorkflowPublisher.cs @@ -1,6 +1,5 @@ using System.Threading; using System.Threading.Tasks; -using AutoMapper; using Elsa.Models; using Elsa.Persistence; diff --git a/src/core/Elsa/ElsaServiceCollectionExtensions.cs b/src/core/Elsa/ElsaServiceCollectionExtensions.cs index 660eb2ad7..927cb2ff4 100644 --- a/src/core/Elsa/ElsaServiceCollectionExtensions.cs +++ b/src/core/Elsa/ElsaServiceCollectionExtensions.cs @@ -4,7 +4,6 @@ using Elsa.Activities.ControlFlow.Extensions; using Elsa.Activities.UserTask.Extensions; using Elsa.Activities.Workflows.Extensions; using Elsa.Runtime; -using Elsa.Scripting.JavaScript.Extensions; using Elsa.Scripting.Liquid.Extensions; // ReSharper disable once CheckNamespace diff --git a/src/dashboard/Elsa.Dashboard/Extensions/DashboardServiceCollectionExtensions.cs b/src/dashboard/Elsa.Dashboard/Extensions/DashboardServiceCollectionExtensions.cs index 7f828e69d..08b176d1b 100644 --- a/src/dashboard/Elsa.Dashboard/Extensions/DashboardServiceCollectionExtensions.cs +++ b/src/dashboard/Elsa.Dashboard/Extensions/DashboardServiceCollectionExtensions.cs @@ -1,11 +1,9 @@ using System; -using Elsa.AutoMapper.Extensions; using Elsa.Dashboard.ActionFilters; using Elsa.Dashboard.Options; using Elsa.Dashboard.Services; using Elsa.Extensions; using Elsa.Mapping; -using Elsa.Runtime; using Elsa.Serialization; using Elsa.Serialization.Formatters; using Elsa.Services; @@ -61,7 +59,7 @@ namespace Elsa.Dashboard.Extensions .AddScoped() .AddScoped() .AddScoped() - .AddAutoMapperProfile(ServiceLifetime.Singleton); + .AddMapperProfile(ServiceLifetime.Singleton); services.AddScoped( sp => diff --git a/src/persistence/Elsa.Persistence.DocumentDb/Extensions/ServiceConfigurationExtensions.cs b/src/persistence/Elsa.Persistence.DocumentDb/Extensions/ServiceConfigurationExtensions.cs index 92a48bbd3..37ecf1c2e 100644 --- a/src/persistence/Elsa.Persistence.DocumentDb/Extensions/ServiceConfigurationExtensions.cs +++ b/src/persistence/Elsa.Persistence.DocumentDb/Extensions/ServiceConfigurationExtensions.cs @@ -1,8 +1,7 @@ using System; using Elsa.Persistence.DocumentDb.Services; -using Elsa.AutoMapper.Extensions; -using Elsa.AutoMapper.Extensions.NodaTime; using Elsa.Extensions; +using Elsa.Mapping; using Elsa.Persistence.DocumentDb.Mapping; using Microsoft.Extensions.DependencyInjection; @@ -25,8 +24,8 @@ namespace Elsa.Persistence.DocumentDb.Extensions builder.Services .AddSingleton(storage) - .AddAutoMapperProfile(ServiceLifetime.Singleton) - .AddAutoMapperProfile(ServiceLifetime.Singleton); + .AddMapperProfile(ServiceLifetime.Singleton) + .AddMapperProfile(ServiceLifetime.Singleton); return new CosmosDbElsaBuilder(builder.Services); } diff --git a/src/persistence/Elsa.Persistence.DocumentDb/Mapping/DocumentProfile.cs b/src/persistence/Elsa.Persistence.DocumentDb/Mapping/DocumentProfile.cs index df3c3f431..185e367e3 100644 --- a/src/persistence/Elsa.Persistence.DocumentDb/Mapping/DocumentProfile.cs +++ b/src/persistence/Elsa.Persistence.DocumentDb/Mapping/DocumentProfile.cs @@ -1,10 +1,10 @@ -using AutoMapper; using Elsa.Models; using Elsa.Persistence.DocumentDb.Documents; +using Elsa.Services; namespace Elsa.Persistence.DocumentDb.Mapping { - public class DocumentProfile : Profile + public sealed class DocumentProfile : MappingProfile { public DocumentProfile() { diff --git a/src/persistence/Elsa.Persistence.DocumentDb/Services/CosmosDbWorkflowDefinitionStore.cs b/src/persistence/Elsa.Persistence.DocumentDb/Services/CosmosDbWorkflowDefinitionStore.cs index bfb1020c9..c3816c932 100644 --- a/src/persistence/Elsa.Persistence.DocumentDb/Services/CosmosDbWorkflowDefinitionStore.cs +++ b/src/persistence/Elsa.Persistence.DocumentDb/Services/CosmosDbWorkflowDefinitionStore.cs @@ -2,11 +2,11 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using AutoMapper; using Elsa.Models; using Elsa.Persistence.DocumentDb.Documents; using Elsa.Persistence.DocumentDb.Extensions; using Elsa.Persistence.DocumentDb.Helpers; +using Elsa.Services; namespace Elsa.Persistence.DocumentDb.Services { diff --git a/src/persistence/Elsa.Persistence.DocumentDb/Services/CosmosDbWorkflowInstanceStore.cs b/src/persistence/Elsa.Persistence.DocumentDb/Services/CosmosDbWorkflowInstanceStore.cs index 0cd3edc17..09eab8c7e 100644 --- a/src/persistence/Elsa.Persistence.DocumentDb/Services/CosmosDbWorkflowInstanceStore.cs +++ b/src/persistence/Elsa.Persistence.DocumentDb/Services/CosmosDbWorkflowInstanceStore.cs @@ -2,11 +2,11 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using AutoMapper; using Elsa.Extensions; using Elsa.Models; using Elsa.Persistence.DocumentDb.Documents; using Elsa.Persistence.DocumentDb.Helpers; +using Elsa.Services; namespace Elsa.Persistence.DocumentDb.Services { diff --git a/src/persistence/Elsa.Persistence.EntityFrameworkCore/DbContexts/ElsaContext.cs b/src/persistence/Elsa.Persistence.EntityFrameworkCore/DbContexts/ElsaContext.cs index 7a36c4e1b..891c7aee4 100644 --- a/src/persistence/Elsa.Persistence.EntityFrameworkCore/DbContexts/ElsaContext.cs +++ b/src/persistence/Elsa.Persistence.EntityFrameworkCore/DbContexts/ElsaContext.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using Elsa.Models; using Elsa.Persistence.EntityFrameworkCore.CustomSchema; using Elsa.Persistence.EntityFrameworkCore.Entities; -using Elsa.Persistence.EntityFrameworkCore.Extensions; using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; using Newtonsoft.Json.Linq; diff --git a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Extensions/EFCoreServiceCollectionExtensions.cs b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Extensions/EFCoreServiceCollectionExtensions.cs index 8d216c4d9..79b0c0867 100644 --- a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Extensions/EFCoreServiceCollectionExtensions.cs +++ b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Extensions/EFCoreServiceCollectionExtensions.cs @@ -1,7 +1,6 @@ using System; -using Elsa.AutoMapper.Extensions; -using Elsa.AutoMapper.Extensions.NodaTime; using Elsa.Extensions; +using Elsa.Mapping; using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Elsa.Persistence.EntityFrameworkCore.Mapping; using Elsa.Persistence.EntityFrameworkCore.Services; @@ -25,8 +24,8 @@ namespace Elsa.Persistence.EntityFrameworkCore.Extensions services.AddDbContext(configureOptions); services - .AddAutoMapperProfile(ServiceLifetime.Singleton) - .AddAutoMapperProfile(ServiceLifetime.Singleton); + .AddMapperProfile(ServiceLifetime.Singleton) + .AddMapperProfile(ServiceLifetime.Singleton); return new EntityFrameworkCoreElsaBuilder(configuration.Services); } diff --git a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Mapping/EntitiesProfile.cs b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Mapping/EntitiesProfile.cs index 7b409b48c..e9403f2ab 100644 --- a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Mapping/EntitiesProfile.cs +++ b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Mapping/EntitiesProfile.cs @@ -3,10 +3,11 @@ using System.Linq; using AutoMapper; using Elsa.Models; using Elsa.Persistence.EntityFrameworkCore.Entities; +using Elsa.Services; namespace Elsa.Persistence.EntityFrameworkCore.Mapping { - public class EntitiesProfile : Profile + public class EntitiesProfile : MappingProfile { public EntitiesProfile() { diff --git a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/MySql/MySqlContextModelSnapshot.cs b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/MySql/MySqlContextModelSnapshot.cs index 2efa8af1f..beb9ba65d 100644 --- a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/MySql/MySqlContextModelSnapshot.cs +++ b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/MySql/MySqlContextModelSnapshot.cs @@ -3,7 +3,6 @@ using System; using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace Elsa.Persistence.EntityFrameworkCore.Migrations.MySql diff --git a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/PostgreSql/PostgreSqlContextModelSnapshot.cs b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/PostgreSql/PostgreSqlContextModelSnapshot.cs index ff7170d31..56284dd78 100644 --- a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/PostgreSql/PostgreSqlContextModelSnapshot.cs +++ b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/PostgreSql/PostgreSqlContextModelSnapshot.cs @@ -3,7 +3,6 @@ using System; using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace Elsa.Persistence.EntityFrameworkCore.Migrations.PostgreSql diff --git a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/SqlServer/SqlServerContextModelSnapshot.cs b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/SqlServer/SqlServerContextModelSnapshot.cs index e77ab1d28..873234582 100644 --- a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/SqlServer/SqlServerContextModelSnapshot.cs +++ b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/SqlServer/SqlServerContextModelSnapshot.cs @@ -4,7 +4,6 @@ using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace Elsa.Persistence.EntityFrameworkCore.Migrations.SqlServer diff --git a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/Sqlite/SqliteContextModelSnapshot.cs b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/Sqlite/SqliteContextModelSnapshot.cs index 78d59d918..061b89465 100644 --- a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/Sqlite/SqliteContextModelSnapshot.cs +++ b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/Sqlite/SqliteContextModelSnapshot.cs @@ -3,7 +3,6 @@ using System; using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace Elsa.Persistence.EntityFrameworkCore.Migrations.Sqlite diff --git a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Services/EntityFrameworkCoreWorkflowDefinitionStore.cs b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Services/EntityFrameworkCoreWorkflowDefinitionStore.cs index 19a938d03..e11f96374 100644 --- a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Services/EntityFrameworkCoreWorkflowDefinitionStore.cs +++ b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Services/EntityFrameworkCoreWorkflowDefinitionStore.cs @@ -2,11 +2,11 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using AutoMapper; using Elsa.Models; using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Elsa.Persistence.EntityFrameworkCore.Entities; using Elsa.Persistence.EntityFrameworkCore.Extensions; +using Elsa.Services; using Microsoft.EntityFrameworkCore; namespace Elsa.Persistence.EntityFrameworkCore.Services diff --git a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Services/EntityFrameworkCoreWorkflowInstanceStore.cs b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Services/EntityFrameworkCoreWorkflowInstanceStore.cs index f9855935f..e9e25b400 100644 --- a/src/persistence/Elsa.Persistence.EntityFrameworkCore/Services/EntityFrameworkCoreWorkflowInstanceStore.cs +++ b/src/persistence/Elsa.Persistence.EntityFrameworkCore/Services/EntityFrameworkCoreWorkflowInstanceStore.cs @@ -2,11 +2,11 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using AutoMapper; using Elsa.Extensions; using Elsa.Models; using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Elsa.Persistence.EntityFrameworkCore.Entities; +using Elsa.Services; using Microsoft.EntityFrameworkCore; namespace Elsa.Persistence.EntityFrameworkCore.Services diff --git a/src/persistence/Elsa.Persistence.YesSql/Extensions/YesSqlServiceCollectionExtensions.cs b/src/persistence/Elsa.Persistence.YesSql/Extensions/YesSqlServiceCollectionExtensions.cs index 37f1752d0..49e38067c 100644 --- a/src/persistence/Elsa.Persistence.YesSql/Extensions/YesSqlServiceCollectionExtensions.cs +++ b/src/persistence/Elsa.Persistence.YesSql/Extensions/YesSqlServiceCollectionExtensions.cs @@ -1,7 +1,6 @@ using System; -using Elsa.AutoMapper.Extensions; -using Elsa.AutoMapper.Extensions.NodaTime; using Elsa.Extensions; +using Elsa.Mapping; using Elsa.Persistence.YesSql.Indexes; using Elsa.Persistence.YesSql.Mapping; using Elsa.Persistence.YesSql.Schema; @@ -26,8 +25,8 @@ namespace Elsa.Persistence.YesSql.Extensions .AddSingleton() .AddTransient() .AddScoped(CreateSession) - .AddAutoMapperProfile(ServiceLifetime.Singleton) - .AddAutoMapperProfile(ServiceLifetime.Singleton) + .AddMapperProfile(ServiceLifetime.Singleton) + .AddMapperProfile(ServiceLifetime.Singleton) .AddStartupTask(); return new YesSqlElsaBuilder(configuration.Services); diff --git a/src/persistence/Elsa.Persistence.YesSql/Mapping/DocumentProfile.cs b/src/persistence/Elsa.Persistence.YesSql/Mapping/DocumentProfile.cs index 184fe4ad9..eb07d75be 100644 --- a/src/persistence/Elsa.Persistence.YesSql/Mapping/DocumentProfile.cs +++ b/src/persistence/Elsa.Persistence.YesSql/Mapping/DocumentProfile.cs @@ -1,10 +1,10 @@ -using AutoMapper; using Elsa.Models; using Elsa.Persistence.YesSql.Documents; +using Elsa.Services; namespace Elsa.Persistence.YesSql.Mapping { - public class DocumentProfile : Profile + public class DocumentProfile : MappingProfile { public DocumentProfile() { diff --git a/src/persistence/Elsa.Persistence.YesSql/Services/YesSqlWorkflowDefinitionStore.cs b/src/persistence/Elsa.Persistence.YesSql/Services/YesSqlWorkflowDefinitionStore.cs index 2d43104e0..54b2f8a5c 100644 --- a/src/persistence/Elsa.Persistence.YesSql/Services/YesSqlWorkflowDefinitionStore.cs +++ b/src/persistence/Elsa.Persistence.YesSql/Services/YesSqlWorkflowDefinitionStore.cs @@ -2,11 +2,11 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using AutoMapper; using Elsa.Models; using Elsa.Persistence.YesSql.Documents; using Elsa.Persistence.YesSql.Extensions; using Elsa.Persistence.YesSql.Indexes; +using Elsa.Services; using YesSql; namespace Elsa.Persistence.YesSql.Services diff --git a/src/persistence/Elsa.Persistence.YesSql/Services/YesSqlWorkflowInstanceStore.cs b/src/persistence/Elsa.Persistence.YesSql/Services/YesSqlWorkflowInstanceStore.cs index e1ea32a2f..9f85a765d 100644 --- a/src/persistence/Elsa.Persistence.YesSql/Services/YesSqlWorkflowInstanceStore.cs +++ b/src/persistence/Elsa.Persistence.YesSql/Services/YesSqlWorkflowInstanceStore.cs @@ -1,11 +1,11 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -using AutoMapper; using Elsa.Extensions; using Elsa.Models; using Elsa.Persistence.YesSql.Documents; using Elsa.Persistence.YesSql.Indexes; +using Elsa.Services; using YesSql; namespace Elsa.Persistence.YesSql.Services @@ -26,15 +26,15 @@ namespace Elsa.Persistence.YesSql.Services public async Task SaveAsync(WorkflowInstance instance, CancellationToken cancellationToken) { string instanceId = instance.Id; - + WorkflowInstanceDocument existingInstance = await session - .Query(x => x.WorkflowInstanceId == instanceId) - .FirstOrDefaultAsync(); + .Query(x => x.WorkflowInstanceId == instanceId) + .FirstOrDefaultAsync(); WorkflowInstanceDocument document = (existingInstance != null) ? mapper.Map(instance, existingInstance) : mapper.Map(instance); - + session.Save(document); await session.CommitAsync(); return mapper.Map(document); diff --git a/src/persistence/Elsa.Persistence.YesSql/StartupTasks/InitializeStoreTask.cs b/src/persistence/Elsa.Persistence.YesSql/StartupTasks/InitializeStoreTask.cs index 21d8956d9..74f951fb1 100644 --- a/src/persistence/Elsa.Persistence.YesSql/StartupTasks/InitializeStoreTask.cs +++ b/src/persistence/Elsa.Persistence.YesSql/StartupTasks/InitializeStoreTask.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; diff --git a/src/samples/Sample04/Program.cs b/src/samples/Sample04/Program.cs index 7c9633c6b..dc825f45f 100644 --- a/src/samples/Sample04/Program.cs +++ b/src/samples/Sample04/Program.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Data; -using System.Linq; using System.Threading.Tasks; using Elsa.Activities.Console.Extensions; using Elsa.Extensions; diff --git a/src/samples/Sample07/Startup.cs b/src/samples/Sample07/Startup.cs index aa6cb10e8..2e14273cd 100644 --- a/src/samples/Sample07/Startup.cs +++ b/src/samples/Sample07/Startup.cs @@ -1,7 +1,6 @@ using Elsa.Activities.Email.Extensions; using Elsa.Activities.Http.Extensions; using Elsa.Activities.Timers.Extensions; -using Elsa.Runtime; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/src/samples/Sample08/Startup.cs b/src/samples/Sample08/Startup.cs index 9f9502666..0cfbe4595 100644 --- a/src/samples/Sample08/Startup.cs +++ b/src/samples/Sample08/Startup.cs @@ -2,7 +2,6 @@ using Elsa.Activities.Http.Extensions; using Elsa.Activities.MassTransit.Extensions; using Elsa.Activities.Timers.Extensions; -using Elsa.Runtime; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/src/samples/Sample14/ElsaContextFactory.cs b/src/samples/Sample14/ElsaContextFactory.cs index 1741dec59..ed8d86276 100644 --- a/src/samples/Sample14/ElsaContextFactory.cs +++ b/src/samples/Sample14/ElsaContextFactory.cs @@ -1,4 +1,3 @@ -using Elsa.Persistence.EntityFrameworkCore; using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; diff --git a/src/samples/Sample14/Migrations/ElsaContextModelSnapshot.cs b/src/samples/Sample14/Migrations/ElsaContextModelSnapshot.cs index 6e53554b6..9ef6061f9 100644 --- a/src/samples/Sample14/Migrations/ElsaContextModelSnapshot.cs +++ b/src/samples/Sample14/Migrations/ElsaContextModelSnapshot.cs @@ -1,6 +1,5 @@ // using System; -using Elsa.Persistence.EntityFrameworkCore; using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; diff --git a/src/samples/Sample14/Program.cs b/src/samples/Sample14/Program.cs index 9f411dbe5..8ffdb8e9e 100644 --- a/src/samples/Sample14/Program.cs +++ b/src/samples/Sample14/Program.cs @@ -4,7 +4,6 @@ using Elsa.Activities.Console.Extensions; using Elsa.Extensions; using Elsa.Models; using Elsa.Persistence; -using Elsa.Persistence.EntityFrameworkCore; using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Elsa.Persistence.EntityFrameworkCore.Extensions; using Elsa.Runtime; diff --git a/src/samples/Sample18/Program.cs b/src/samples/Sample18/Program.cs index 80559ecbe..4733c587b 100644 --- a/src/samples/Sample18/Program.cs +++ b/src/samples/Sample18/Program.cs @@ -1,5 +1,4 @@ using System.IO; -using System.Net.Mail; using System.Threading.Tasks; using Elsa.Activities.Console.Extensions; using Elsa.Activities.Email.Extensions; diff --git a/src/samples/Sample20/Workflows/SplitObjectWorkflow.cs b/src/samples/Sample20/Workflows/SplitObjectWorkflow.cs index a54536389..eec631853 100644 --- a/src/samples/Sample20/Workflows/SplitObjectWorkflow.cs +++ b/src/samples/Sample20/Workflows/SplitObjectWorkflow.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections; using Elsa; using Elsa.Activities; using Elsa.Activities.Console.Activities; @@ -40,7 +40,7 @@ namespace Sample20.Workflows x.ValueExpression = new JavaScriptExpression("'Test'"); }) .Then( - x => x.CollectionExpression = new JavaScriptExpression>("[Customer1, Customer2, Customer3]"), + x => x.CollectionExpression = new JavaScriptExpression("[Customer1, Customer2, Customer3]"), forEach => { forEach diff --git a/src/samples/Sample21/Startup.cs b/src/samples/Sample21/Startup.cs index f5691b1d7..1832f0ef6 100644 --- a/src/samples/Sample21/Startup.cs +++ b/src/samples/Sample21/Startup.cs @@ -4,7 +4,6 @@ using Elsa.Activities.Email.Extensions; using Elsa.Activities.Http.Extensions; using Elsa.Activities.MassTransit.Extensions; using Elsa.Activities.Timers.Extensions; -using Elsa.Runtime; using GreenPipes; using MassTransit; using MassTransit.ExtensionsDependencyInjectionIntegration; diff --git a/src/samples/Sample22/Program.cs b/src/samples/Sample22/Program.cs index 80be035d0..8960af2be 100644 --- a/src/samples/Sample22/Program.cs +++ b/src/samples/Sample22/Program.cs @@ -4,10 +4,8 @@ using Elsa.Activities.Console.Extensions; using Elsa.Extensions; using Elsa.Models; using Elsa.Persistence; -using Elsa.Persistence.EntityFrameworkCore; using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Elsa.Persistence.EntityFrameworkCore.Extensions; -using Elsa.Runtime; using Elsa.Services; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; diff --git a/src/samples/Sample23/ElsaContextFactory.cs b/src/samples/Sample23/ElsaContextFactory.cs index 520651f97..236163ae7 100644 --- a/src/samples/Sample23/ElsaContextFactory.cs +++ b/src/samples/Sample23/ElsaContextFactory.cs @@ -1,7 +1,6 @@ using Elsa; using Elsa.Persistence.EntityFrameworkCore.CustomSchema; using Elsa.Persistence.EntityFrameworkCore.DbContexts; -using Elsa.Persistence.EntityFrameworkCore.Extensions; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; using Microsoft.Extensions.DependencyInjection; diff --git a/src/samples/Sample23/HelloWorldWorkflow.cs b/src/samples/Sample23/HelloWorldWorkflow.cs index 9c192db20..1034319e6 100644 --- a/src/samples/Sample23/HelloWorldWorkflow.cs +++ b/src/samples/Sample23/HelloWorldWorkflow.cs @@ -10,6 +10,7 @@ namespace Sample23 public void Build(IWorkflowBuilder builder) { builder + .WithVersion(1) .StartWith(activity => activity.TextExpression = new LiteralExpression("Hello World!")); } } diff --git a/src/samples/Sample23/Migrations/ElsaContextModelSnapshot.cs b/src/samples/Sample23/Migrations/ElsaContextModelSnapshot.cs index 1f9bc63f2..6a129d24a 100644 --- a/src/samples/Sample23/Migrations/ElsaContextModelSnapshot.cs +++ b/src/samples/Sample23/Migrations/ElsaContextModelSnapshot.cs @@ -3,7 +3,6 @@ using System; using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Sample23.Migrations { diff --git a/src/samples/Sample23/Program.cs b/src/samples/Sample23/Program.cs index cce6b67af..0360ef733 100644 --- a/src/samples/Sample23/Program.cs +++ b/src/samples/Sample23/Program.cs @@ -4,14 +4,12 @@ using Elsa.Activities.Console.Extensions; using Elsa.Extensions; using Elsa.Models; using Elsa.Persistence; -using Elsa.Persistence.EntityFrameworkCore; using Elsa.Persistence.EntityFrameworkCore.CustomSchema; using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Elsa.Persistence.EntityFrameworkCore.Extensions; using Elsa.Runtime; using Elsa.Services; using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.Extensions.DependencyInjection; namespace Sample23 diff --git a/src/scripting/Elsa.Scripting.JavaScript/Handlers/DateTimeScriptEngineConfigurator.cs b/src/scripting/Elsa.Scripting.JavaScript/Handlers/DateTimeScriptEngineConfigurator.cs index fc4300159..2a4d4850e 100644 --- a/src/scripting/Elsa.Scripting.JavaScript/Handlers/DateTimeScriptEngineConfigurator.cs +++ b/src/scripting/Elsa.Scripting.JavaScript/Handlers/DateTimeScriptEngineConfigurator.cs @@ -5,7 +5,6 @@ using System.Threading.Tasks; using Elsa.Scripting.JavaScript.Messages; using MediatR; using NodaTime; -using NodaTime.Text; namespace Elsa.Scripting.JavaScript.Handlers { diff --git a/src/scripting/Elsa.Scripting.JavaScript/Services/JavaScriptExpressionEvaluator.cs b/src/scripting/Elsa.Scripting.JavaScript/Services/JavaScriptExpressionEvaluator.cs index b1faa5fac..da0dd4991 100644 --- a/src/scripting/Elsa.Scripting.JavaScript/Services/JavaScriptExpressionEvaluator.cs +++ b/src/scripting/Elsa.Scripting.JavaScript/Services/JavaScriptExpressionEvaluator.cs @@ -3,7 +3,6 @@ using System.Dynamic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using AutoMapper; using Elsa.Expressions; using Elsa.Scripting.JavaScript.Converters; using Elsa.Scripting.JavaScript.Extensions; @@ -25,7 +24,6 @@ namespace Elsa.Scripting.JavaScript.Services public class JavaScriptExpressionEvaluator : IExpressionEvaluator { private readonly IMediator mediator; - private readonly IMapper mapper; private readonly IOptions options; private readonly JsonSerializerSettings serializerSettings; public const string SyntaxName = "JavaScript"; @@ -38,7 +36,6 @@ namespace Elsa.Scripting.JavaScript.Services public JavaScriptExpressionEvaluator(IMediator mediator, IMapper mapper, IOptions options) { this.mediator = mediator; - this.mapper = mapper; this.options = options; serializerSettings = new JsonSerializerSettings().ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);