From 6551b61ead4e49fa71f6e2f8848707a2f48d5fa8 Mon Sep 17 00:00:00 2001 From: Sviataslau Hankovich Date: Tue, 27 Oct 2020 14:32:53 +0300 Subject: [PATCH] Simplify Options, get rid of OptionsBuilder (#431) * Minor cleanup * Fix namespaces * Simplify options --- .../Extensions/ServiceCollectionExtensions.cs | 12 +++++++----- .../Extensions/ServiceCollectionExtensions.cs | 13 +++++++------ .../Extensions/ServiceCollectionExtensions.cs | 12 +++++++----- .../Extensions/ServiceCollectionExtensions.cs | 13 +++++++------ .../Extensions/ServiceCollectionExtensions.cs | 11 ++++++----- src/samples/Elsa.Samples.DistributedLock/Program.cs | 2 +- .../RecurringWorkflow.cs | 2 +- src/samples/Elsa.Samples.Timers/CronTaskWorkflow.cs | 2 +- src/samples/Elsa.Samples.Timers/Program.cs | 4 ++-- .../Elsa.Samples.Timers/RecurringTaskWorkflow.cs | 2 +- .../JavaScriptServiceCollectionExtensions.cs | 6 ++---- .../Extensions/JsonMvcBuilderExtensions.cs | 6 +++--- src/server/Elsa.Server.Host/Startup.cs | 6 +++--- 13 files changed, 48 insertions(+), 43 deletions(-) diff --git a/src/activities/Elsa.Activities.Dropbox/Extensions/ServiceCollectionExtensions.cs b/src/activities/Elsa.Activities.Dropbox/Extensions/ServiceCollectionExtensions.cs index a3532b495..8a88d1f6d 100644 --- a/src/activities/Elsa.Activities.Dropbox/Extensions/ServiceCollectionExtensions.cs +++ b/src/activities/Elsa.Activities.Dropbox/Extensions/ServiceCollectionExtensions.cs @@ -11,15 +11,17 @@ namespace Microsoft.Extensions.DependencyInjection { public static class ServiceCollectionExtensions { - public static IServiceCollection AddDropbox(this IServiceCollection services, Action>? options = null) => + public static IServiceCollection AddDropbox(this IServiceCollection services, Action? configureOptions = null) => services - .AddDropboxServices(options) + .AddDropboxServices(configureOptions) .AddDropboxActivities(); - public static IServiceCollection AddDropboxServices(this IServiceCollection services, Action>? options = null) + public static IServiceCollection AddDropboxServices(this IServiceCollection services, Action? configureOptions = null) { - var optionsBuilder = services.AddOptions(); - options?.Invoke(optionsBuilder); + if (configureOptions != null) + { + services.Configure(configureOptions); + } services .AddHttpClient() diff --git a/src/activities/Elsa.Activities.Email/Extensions/ServiceCollectionExtensions.cs b/src/activities/Elsa.Activities.Email/Extensions/ServiceCollectionExtensions.cs index e678ce601..22414e687 100644 --- a/src/activities/Elsa.Activities.Email/Extensions/ServiceCollectionExtensions.cs +++ b/src/activities/Elsa.Activities.Email/Extensions/ServiceCollectionExtensions.cs @@ -2,22 +2,23 @@ using System; using Elsa.Activities.Email; using Elsa.Activities.Email.Options; using Elsa.Activities.Email.Services; -using Microsoft.Extensions.Options; // ReSharper disable once CheckNamespace namespace Microsoft.Extensions.DependencyInjection { public static class ServiceCollectionExtensions { - public static IServiceCollection AddEmailActivities(this IServiceCollection services, Action> options = null) => + public static IServiceCollection AddEmailActivities(this IServiceCollection services, Action configureOptions = null) => services - .AddEmailServices(options) + .AddEmailServices(configureOptions) .AddEmailActivitiesInternal(); - public static IServiceCollection AddEmailServices(this IServiceCollection services, Action> options = null) + public static IServiceCollection AddEmailServices(this IServiceCollection services, Action configureOptions = null) { - var optionsBuilder = services.AddOptions(); - options?.Invoke(optionsBuilder); + if (configureOptions != null) + { + services.Configure(configureOptions); + } return services .AddSingleton(); diff --git a/src/activities/Elsa.Activities.Http/Extensions/ServiceCollectionExtensions.cs b/src/activities/Elsa.Activities.Http/Extensions/ServiceCollectionExtensions.cs index f531321e1..dcb10b1c2 100644 --- a/src/activities/Elsa.Activities.Http/Extensions/ServiceCollectionExtensions.cs +++ b/src/activities/Elsa.Activities.Http/Extensions/ServiceCollectionExtensions.cs @@ -12,21 +12,23 @@ using Elsa.Triggers; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.Extensions.DependencyInjection.Extensions; -using Microsoft.Extensions.Options; // ReSharper disable once CheckNamespace namespace Microsoft.Extensions.DependencyInjection { public static class ServiceCollectionExtensions { - public static IServiceCollection AddHttpActivities(this IServiceCollection services, Action> options = null) => + public static IServiceCollection AddHttpActivities(this IServiceCollection services, Action? configureOptions = null) => services - .AddHttpServices(options) + .AddHttpServices(configureOptions) .AddHttpActivitiesInternal(); - public static IServiceCollection AddHttpServices(this IServiceCollection services, Action> options = null) + public static IServiceCollection AddHttpServices(this IServiceCollection services, Action? configureOptions = null) { - options?.Invoke(services.AddOptions()); + if (configureOptions != null) + { + services.Configure(configureOptions); + } services.TryAddSingleton(); services.AddHttpClient(nameof(SendHttpRequest)); diff --git a/src/activities/Elsa.Activities.MassTransit/Extensions/ServiceCollectionExtensions.cs b/src/activities/Elsa.Activities.MassTransit/Extensions/ServiceCollectionExtensions.cs index ac853fa0b..37db3ef35 100644 --- a/src/activities/Elsa.Activities.MassTransit/Extensions/ServiceCollectionExtensions.cs +++ b/src/activities/Elsa.Activities.MassTransit/Extensions/ServiceCollectionExtensions.cs @@ -5,7 +5,6 @@ using Elsa.Activities.MassTransit.Options; using MassTransit; using MassTransit.ConsumeConfigurators; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; namespace Elsa.Activities.MassTransit.Extensions { @@ -44,10 +43,12 @@ namespace Elsa.Activities.MassTransit.Extensions return services; } - public static IServiceCollection AddRabbitMqActivities(this IServiceCollection services, Action> options = null, params Type[] messageTypes) + public static IServiceCollection AddRabbitMqActivities(this IServiceCollection services, Action? configureOptions = null, params Type[] messageTypes) { - var optionsBuilder = services.AddOptions(); - options?.Invoke(optionsBuilder); + if (configureOptions != null) + { + services.Configure(configureOptions); + } services .AddMassTransitActivities(); @@ -71,7 +72,7 @@ namespace Elsa.Activities.MassTransit.Extensions public static void ConfigureWorkflowConsumer( this IReceiveEndpointConfigurator configurator, IServiceProvider provider, - Action>> configure = null) + Action>>? configure = null) where TMessage : class { provider.GetRequiredService().ConfigureConsumer(configurator, configure); @@ -81,7 +82,7 @@ namespace Elsa.Activities.MassTransit.Extensions public static IConsumerRegistrationConfigurator> AddWorkflowConsumer( this IRegistrationConfigurator configurator, - Action>> configure = null) + Action>>? configure = null) where TMessage : class { return configurator.AddConsumer(configure); diff --git a/src/activities/Elsa.Activities.Timers/Extensions/ServiceCollectionExtensions.cs b/src/activities/Elsa.Activities.Timers/Extensions/ServiceCollectionExtensions.cs index f671d629f..cf29e916f 100644 --- a/src/activities/Elsa.Activities.Timers/Extensions/ServiceCollectionExtensions.cs +++ b/src/activities/Elsa.Activities.Timers/Extensions/ServiceCollectionExtensions.cs @@ -2,18 +2,19 @@ using System; using Elsa.Activities.Timers; using Elsa.Activities.Timers.HostedServices; using Elsa.Activities.Timers.Options; -using Microsoft.Extensions.Options; // ReSharper disable once CheckNamespace namespace Microsoft.Extensions.DependencyInjection { public static class ServiceCollectionExtensions { - public static IServiceCollection AddTimerActivities(this IServiceCollection services, Action> options = null) + public static IServiceCollection AddTimerActivities(this IServiceCollection services, Action? configureOptions = null) { - var optionsBuilder = services.AddOptions(); - options?.Invoke(optionsBuilder); - + if (configureOptions != null) + { + services.Configure(configureOptions); + } + return services .AddHostedService() .AddActivity() diff --git a/src/samples/Elsa.Samples.DistributedLock/Program.cs b/src/samples/Elsa.Samples.DistributedLock/Program.cs index 370cc74d2..887551668 100644 --- a/src/samples/Elsa.Samples.DistributedLock/Program.cs +++ b/src/samples/Elsa.Samples.DistributedLock/Program.cs @@ -25,7 +25,7 @@ namespace Elsa.Samples.DistributedLock .UsePersistence(db => db.UseSqLite("Data Source=elsa.db;Cache=Shared")) .UseRedisLockProvider("localhost:6379,abortConnect=false")) .AddConsoleActivities() - .AddTimerActivities(options => options.Configure(timer => timer.SweepInterval = Duration.FromSeconds(5))) + .AddTimerActivities(timer => timer.SweepInterval = Duration.FromSeconds(5)) .AddWorkflow(); }); } diff --git a/src/samples/Elsa.Samples.DistributedLock/RecurringWorkflow.cs b/src/samples/Elsa.Samples.DistributedLock/RecurringWorkflow.cs index 0102ccdc2..263da01d8 100644 --- a/src/samples/Elsa.Samples.DistributedLock/RecurringWorkflow.cs +++ b/src/samples/Elsa.Samples.DistributedLock/RecurringWorkflow.cs @@ -1,9 +1,9 @@ using Elsa.Activities.Console; -using Elsa.Activities.MassTransit; using Elsa.Builders; using Elsa.Models; using NodaTime; using System; +using Elsa.Activities.Timers; namespace Elsa.Samples.DistributedLock { diff --git a/src/samples/Elsa.Samples.Timers/CronTaskWorkflow.cs b/src/samples/Elsa.Samples.Timers/CronTaskWorkflow.cs index 31bb4c690..32b689a43 100644 --- a/src/samples/Elsa.Samples.Timers/CronTaskWorkflow.cs +++ b/src/samples/Elsa.Samples.Timers/CronTaskWorkflow.cs @@ -1,6 +1,6 @@ using System; using Elsa.Activities.Console; -using Elsa.Activities.MassTransit; +using Elsa.Activities.Timers; using Elsa.Builders; namespace Elsa.Samples.Timers diff --git a/src/samples/Elsa.Samples.Timers/Program.cs b/src/samples/Elsa.Samples.Timers/Program.cs index 7af99adf7..a7243798f 100644 --- a/src/samples/Elsa.Samples.Timers/Program.cs +++ b/src/samples/Elsa.Samples.Timers/Program.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using NodaTime; @@ -18,7 +18,7 @@ namespace Elsa.Samples.Timers services .AddElsa(options => options.UsePersistence(db => db.UseSqLite("Data Source=elsa.db;Cache=Shared"))) .AddConsoleActivities() - .AddTimerActivities(options => options.Configure(timer => timer.SweepInterval = Duration.FromSeconds(5))) + .AddTimerActivities(timer => timer.SweepInterval = Duration.FromSeconds(5)) .AddWorkflow() .AddWorkflow(); }); diff --git a/src/samples/Elsa.Samples.Timers/RecurringTaskWorkflow.cs b/src/samples/Elsa.Samples.Timers/RecurringTaskWorkflow.cs index 2407d94cf..c98fb8f71 100644 --- a/src/samples/Elsa.Samples.Timers/RecurringTaskWorkflow.cs +++ b/src/samples/Elsa.Samples.Timers/RecurringTaskWorkflow.cs @@ -1,6 +1,6 @@ using System; using Elsa.Activities.Console; -using Elsa.Activities.MassTransit; +using Elsa.Activities.Timers; using Elsa.Builders; using Elsa.Models; using NodaTime; diff --git a/src/scripting/Elsa.Scripting.JavaScript/Extensions/JavaScriptServiceCollectionExtensions.cs b/src/scripting/Elsa.Scripting.JavaScript/Extensions/JavaScriptServiceCollectionExtensions.cs index b74bd3186..e3b24dd6f 100644 --- a/src/scripting/Elsa.Scripting.JavaScript/Extensions/JavaScriptServiceCollectionExtensions.cs +++ b/src/scripting/Elsa.Scripting.JavaScript/Extensions/JavaScriptServiceCollectionExtensions.cs @@ -1,7 +1,6 @@ using Elsa.Extensions; using Elsa.Scripting.JavaScript.Options; using Elsa.Scripting.JavaScript.Services; -using Microsoft.Extensions.Options; using System; using Elsa.Expressions; @@ -17,10 +16,9 @@ namespace Microsoft.Extensions.DependencyInjection .AddNotificationHandlers(typeof(JavaScriptServiceCollectionExtensions)); } - public static IServiceCollection WithJavaScriptOptions(this IServiceCollection services, Action> options) + public static IServiceCollection WithJavaScriptOptions(this IServiceCollection services, Action configureOptions) { - var scriptOptions = services.AddOptions(); - options(scriptOptions); + services.Configure(configureOptions); return services; } diff --git a/src/server/Elsa.Server.Api/Extensions/JsonMvcBuilderExtensions.cs b/src/server/Elsa.Server.Api/Extensions/JsonMvcBuilderExtensions.cs index 7f1130382..15b96fb16 100644 --- a/src/server/Elsa.Server.Api/Extensions/JsonMvcBuilderExtensions.cs +++ b/src/server/Elsa.Server.Api/Extensions/JsonMvcBuilderExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using Elsa.Serialization; using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; @@ -7,11 +7,11 @@ namespace Elsa.Server.Api.Extensions { public static class JsonMvcBuilderExtensions { - public static IMvcBuilder AddJsonSerialization(this IMvcBuilder builder, Action? configure = default) => + public static IMvcBuilder AddJsonSerialization(this IMvcBuilder builder, Action? configureOptions = default) => builder.AddNewtonsoftJson( options => { - configure ??= DefaultContentSerializer.ConfigureDefaultJsonSerializationSettings; + configureOptions ??= DefaultContentSerializer.ConfigureDefaultJsonSerializationSettings; //configure(options.SerializerSettings); }); } diff --git a/src/server/Elsa.Server.Host/Startup.cs b/src/server/Elsa.Server.Host/Startup.cs index c94dd5ed9..f70e08ccf 100644 --- a/src/server/Elsa.Server.Host/Startup.cs +++ b/src/server/Elsa.Server.Host/Startup.cs @@ -40,9 +40,9 @@ namespace Elsa.Server.Host .AllowAnyHeader())) .AddConsoleActivities() - .AddHttpActivities(options => options.Bind(elsaSection.GetSection("Http"))) - .AddEmailActivities(options => options.Bind(elsaSection.GetSection("Smtp"))) - .AddTimerActivities(options => options.Bind(elsaSection.GetSection("BackgroundRunner"))) + .AddHttpActivities(elsaSection.GetSection("Http").Bind) + .AddEmailActivities(elsaSection.GetSection("Smtp").Bind) + .AddTimerActivities(elsaSection.GetSection("BackgroundRunner").Bind) .AddStartupTask(); }