From 096eb72d40b376ffb0bd2aa68cf081c83d996a62 Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Sat, 23 Mar 2019 15:31:40 +0100 Subject: [PATCH] Migration to newer packages. --- .../Actions/Algolia/AlgoliaPlugin.cs | 2 +- .../Actions/AzureQueue/AzureQueuePlugin.cs | 2 +- .../Actions/Discourse/DiscoursePlugin.cs | 2 +- .../ElasticSearch/ElasticSearchPlugin.cs | 2 +- .../Actions/Email/EmailPlugin.cs | 2 +- .../Actions/Fastly/FastlyPlugin.cs | 2 +- .../Actions/Medium/MediumPlugin.cs | 2 +- .../Actions/Prerender/PrerenderPlugin.cs | 2 +- .../Actions/Slack/SlackPlugin.cs | 2 +- .../Actions/Twitter/TwitterPlugin.cs | 4 +- .../Actions/Webhook/WebhookPlugin.cs | 2 +- .../Samples/MemoryAssetStorePlugin.cs | 4 +- .../Squidex.Extensions.csproj | 2 +- ...Squidex.Domain.Apps.Core.Operations.csproj | 2 +- ...quidex.Domain.Apps.Entities.MongoDb.csproj | 2 +- .../Squidex.Domain.Apps.Entities.csproj | 4 +- .../Squidex.Domain.Users.MongoDb.csproj | 4 +- .../Squidex.Infrastructure.Azure.csproj | 2 +- .../Squidex.Infrastructure.MongoDb.csproj | 4 +- src/Squidex.Infrastructure/Plugins/IPlugin.cs | 2 +- .../Plugins/PluginManager.cs | 6 +- .../Squidex.Infrastructure.csproj | 6 +- .../Config/Orleans/EnvironmentWrapper.cs | 47 ++++++++++++ src/Squidex/Config/Orleans/Extensions.cs | 57 --------------- src/Squidex/Config/Orleans/OrleansServices.cs | 50 ++++++------- .../Config/Orleans/SiloServiceBuilder.cs | 73 +++++++++++++++++++ .../Pipeline/Plugins/PluginExtensions.cs | 6 +- src/Squidex/Squidex.csproj | 24 +++--- src/Squidex/WebStartup.cs | 23 +++--- .../Squidex.Domain.Apps.Core.Tests.csproj | 2 +- .../Squidex.Domain.Apps.Entities.Tests.csproj | 4 +- .../Squidex.Domain.Users.Tests.csproj | 2 +- .../Squidex.Infrastructure.Tests.csproj | 2 +- tests/Squidex.Tests/Squidex.Tests.csproj | 8 +- tools/Migrate_00/Migrate_00.csproj | 2 +- 35 files changed, 212 insertions(+), 150 deletions(-) create mode 100644 src/Squidex/Config/Orleans/EnvironmentWrapper.cs delete mode 100644 src/Squidex/Config/Orleans/Extensions.cs create mode 100644 src/Squidex/Config/Orleans/SiloServiceBuilder.cs diff --git a/extensions/Squidex.Extensions/Actions/Algolia/AlgoliaPlugin.cs b/extensions/Squidex.Extensions/Actions/Algolia/AlgoliaPlugin.cs index 9ef4538c9..c668ba003 100644 --- a/extensions/Squidex.Extensions/Actions/Algolia/AlgoliaPlugin.cs +++ b/extensions/Squidex.Extensions/Actions/Algolia/AlgoliaPlugin.cs @@ -13,7 +13,7 @@ namespace Squidex.Extensions.Actions.Algolia { public sealed class AlgoliaPlugin : IPlugin { - public void ConfigureServices(IServiceCollection services, IConfiguration configuration) + public void ConfigureServices(IServiceCollection services, IConfiguration config) { services.AddRuleAction(); } diff --git a/extensions/Squidex.Extensions/Actions/AzureQueue/AzureQueuePlugin.cs b/extensions/Squidex.Extensions/Actions/AzureQueue/AzureQueuePlugin.cs index 43c84e857..4dce57e2b 100644 --- a/extensions/Squidex.Extensions/Actions/AzureQueue/AzureQueuePlugin.cs +++ b/extensions/Squidex.Extensions/Actions/AzureQueue/AzureQueuePlugin.cs @@ -13,7 +13,7 @@ namespace Squidex.Extensions.Actions.AzureQueue { public sealed class AzureQueuePlugin : IPlugin { - public void ConfigureServices(IServiceCollection services, IConfiguration configuration) + public void ConfigureServices(IServiceCollection services, IConfiguration config) { services.AddRuleAction(); } diff --git a/extensions/Squidex.Extensions/Actions/Discourse/DiscoursePlugin.cs b/extensions/Squidex.Extensions/Actions/Discourse/DiscoursePlugin.cs index fb1105657..e78e04d54 100644 --- a/extensions/Squidex.Extensions/Actions/Discourse/DiscoursePlugin.cs +++ b/extensions/Squidex.Extensions/Actions/Discourse/DiscoursePlugin.cs @@ -13,7 +13,7 @@ namespace Squidex.Extensions.Actions.Discourse { public sealed class DiscoursePlugin : IPlugin { - public void ConfigureServices(IServiceCollection services, IConfiguration configuration) + public void ConfigureServices(IServiceCollection services, IConfiguration config) { services.AddRuleAction(); } diff --git a/extensions/Squidex.Extensions/Actions/ElasticSearch/ElasticSearchPlugin.cs b/extensions/Squidex.Extensions/Actions/ElasticSearch/ElasticSearchPlugin.cs index 50bdf12d4..a40f610b0 100644 --- a/extensions/Squidex.Extensions/Actions/ElasticSearch/ElasticSearchPlugin.cs +++ b/extensions/Squidex.Extensions/Actions/ElasticSearch/ElasticSearchPlugin.cs @@ -13,7 +13,7 @@ namespace Squidex.Extensions.Actions.ElasticSearch { public sealed class ElasticSearchPlugin : IPlugin { - public void ConfigureServices(IServiceCollection services, IConfiguration configuration) + public void ConfigureServices(IServiceCollection services, IConfiguration config) { services.AddRuleAction(); } diff --git a/extensions/Squidex.Extensions/Actions/Email/EmailPlugin.cs b/extensions/Squidex.Extensions/Actions/Email/EmailPlugin.cs index aeed28445..dd9140866 100644 --- a/extensions/Squidex.Extensions/Actions/Email/EmailPlugin.cs +++ b/extensions/Squidex.Extensions/Actions/Email/EmailPlugin.cs @@ -13,7 +13,7 @@ namespace Squidex.Extensions.Actions.Email { public sealed class EmailPlugin : IPlugin { - public void ConfigureServices(IServiceCollection services, IConfiguration configuration) + public void ConfigureServices(IServiceCollection services, IConfiguration config) { services.AddRuleAction(); } diff --git a/extensions/Squidex.Extensions/Actions/Fastly/FastlyPlugin.cs b/extensions/Squidex.Extensions/Actions/Fastly/FastlyPlugin.cs index f6802dde3..d5e4f76b9 100644 --- a/extensions/Squidex.Extensions/Actions/Fastly/FastlyPlugin.cs +++ b/extensions/Squidex.Extensions/Actions/Fastly/FastlyPlugin.cs @@ -13,7 +13,7 @@ namespace Squidex.Extensions.Actions.Fastly { public sealed class FastlyPlugin : IPlugin { - public void ConfigureServices(IServiceCollection services, IConfiguration configuration) + public void ConfigureServices(IServiceCollection services, IConfiguration config) { services.AddRuleAction(); } diff --git a/extensions/Squidex.Extensions/Actions/Medium/MediumPlugin.cs b/extensions/Squidex.Extensions/Actions/Medium/MediumPlugin.cs index b2664ac3b..5d8839f89 100644 --- a/extensions/Squidex.Extensions/Actions/Medium/MediumPlugin.cs +++ b/extensions/Squidex.Extensions/Actions/Medium/MediumPlugin.cs @@ -13,7 +13,7 @@ namespace Squidex.Extensions.Actions.Medium { public sealed class MediumPlugin : IPlugin { - public void ConfigureServices(IServiceCollection services, IConfiguration configuration) + public void ConfigureServices(IServiceCollection services, IConfiguration config) { services.AddRuleAction(); } diff --git a/extensions/Squidex.Extensions/Actions/Prerender/PrerenderPlugin.cs b/extensions/Squidex.Extensions/Actions/Prerender/PrerenderPlugin.cs index fcf623e3f..608cb32d4 100644 --- a/extensions/Squidex.Extensions/Actions/Prerender/PrerenderPlugin.cs +++ b/extensions/Squidex.Extensions/Actions/Prerender/PrerenderPlugin.cs @@ -13,7 +13,7 @@ namespace Squidex.Extensions.Actions.Prerender { public sealed class PrerenderPlugin : IPlugin { - public void ConfigureServices(IServiceCollection services, IConfiguration configuration) + public void ConfigureServices(IServiceCollection services, IConfiguration config) { services.AddRuleAction(); } diff --git a/extensions/Squidex.Extensions/Actions/Slack/SlackPlugin.cs b/extensions/Squidex.Extensions/Actions/Slack/SlackPlugin.cs index f0463c87e..15549a349 100644 --- a/extensions/Squidex.Extensions/Actions/Slack/SlackPlugin.cs +++ b/extensions/Squidex.Extensions/Actions/Slack/SlackPlugin.cs @@ -13,7 +13,7 @@ namespace Squidex.Extensions.Actions.Slack { public sealed class SlackPlugin : IPlugin { - public void ConfigureServices(IServiceCollection services, IConfiguration configuration) + public void ConfigureServices(IServiceCollection services, IConfiguration config) { services.AddRuleAction(); } diff --git a/extensions/Squidex.Extensions/Actions/Twitter/TwitterPlugin.cs b/extensions/Squidex.Extensions/Actions/Twitter/TwitterPlugin.cs index fd59ec980..2d987b3c4 100644 --- a/extensions/Squidex.Extensions/Actions/Twitter/TwitterPlugin.cs +++ b/extensions/Squidex.Extensions/Actions/Twitter/TwitterPlugin.cs @@ -13,10 +13,10 @@ namespace Squidex.Extensions.Actions.Twitter { public sealed class TwitterPlugin : IPlugin { - public void ConfigureServices(IServiceCollection services, IConfiguration configuration) + public void ConfigureServices(IServiceCollection services, IConfiguration config) { services.Configure( - configuration.GetSection("twitter")); + config.GetSection("twitter")); services.AddRuleAction(); } diff --git a/extensions/Squidex.Extensions/Actions/Webhook/WebhookPlugin.cs b/extensions/Squidex.Extensions/Actions/Webhook/WebhookPlugin.cs index d729f1b5e..e25857123 100644 --- a/extensions/Squidex.Extensions/Actions/Webhook/WebhookPlugin.cs +++ b/extensions/Squidex.Extensions/Actions/Webhook/WebhookPlugin.cs @@ -13,7 +13,7 @@ namespace Squidex.Extensions.Actions.Webhook { public sealed class WebhookPlugin : IPlugin { - public void ConfigureServices(IServiceCollection services, IConfiguration configuration) + public void ConfigureServices(IServiceCollection services, IConfiguration config) { services.AddRuleAction(); } diff --git a/extensions/Squidex.Extensions/Samples/MemoryAssetStorePlugin.cs b/extensions/Squidex.Extensions/Samples/MemoryAssetStorePlugin.cs index b4a018ed5..bf586a836 100644 --- a/extensions/Squidex.Extensions/Samples/MemoryAssetStorePlugin.cs +++ b/extensions/Squidex.Extensions/Samples/MemoryAssetStorePlugin.cs @@ -15,9 +15,9 @@ namespace Squidex.Extensions.Samples { public sealed class MemoryAssetStorePlugin : IPlugin { - public void ConfigureServices(IServiceCollection services, IConfiguration configuration) + public void ConfigureServices(IServiceCollection services, IConfiguration config) { - var storeType = configuration.GetValue("assetStore:type"); + var storeType = config.GetValue("assetStore:type"); if (string.Equals(storeType, "Memory", StringComparison.OrdinalIgnoreCase)) { diff --git a/extensions/Squidex.Extensions/Squidex.Extensions.csproj b/extensions/Squidex.Extensions/Squidex.Extensions.csproj index d365c5a6d..d9b24aa1f 100644 --- a/extensions/Squidex.Extensions/Squidex.Extensions.csproj +++ b/extensions/Squidex.Extensions/Squidex.Extensions.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj b/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj index 4e12cdabd..333692707 100644 --- a/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj +++ b/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj @@ -17,7 +17,7 @@ - + diff --git a/src/Squidex.Domain.Apps.Entities.MongoDb/Squidex.Domain.Apps.Entities.MongoDb.csproj b/src/Squidex.Domain.Apps.Entities.MongoDb/Squidex.Domain.Apps.Entities.MongoDb.csproj index bae5d32f0..b8c6ea495 100644 --- a/src/Squidex.Domain.Apps.Entities.MongoDb/Squidex.Domain.Apps.Entities.MongoDb.csproj +++ b/src/Squidex.Domain.Apps.Entities.MongoDb/Squidex.Domain.Apps.Entities.MongoDb.csproj @@ -17,7 +17,7 @@ - + diff --git a/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj b/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj index 7b7db6907..46f190489 100644 --- a/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj +++ b/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj @@ -20,11 +20,11 @@ - + all runtime; build; native; contentfiles; analyzers - + diff --git a/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj b/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj index 351faafbf..a314a3872 100644 --- a/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj +++ b/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj @@ -14,10 +14,10 @@ - + - + diff --git a/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj b/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj index 32ea4d0ad..5351ea162 100644 --- a/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj +++ b/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj @@ -6,7 +6,7 @@ - + diff --git a/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj b/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj index 683baf450..0acd60699 100644 --- a/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj +++ b/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj @@ -12,8 +12,8 @@ - - + + diff --git a/src/Squidex.Infrastructure/Plugins/IPlugin.cs b/src/Squidex.Infrastructure/Plugins/IPlugin.cs index 2c8fc4674..9d5a2618e 100644 --- a/src/Squidex.Infrastructure/Plugins/IPlugin.cs +++ b/src/Squidex.Infrastructure/Plugins/IPlugin.cs @@ -12,6 +12,6 @@ namespace Squidex.Infrastructure.Plugins { public interface IPlugin { - void ConfigureServices(IServiceCollection services, IConfiguration configuration); + void ConfigureServices(IServiceCollection services, IConfiguration config); } } diff --git a/src/Squidex.Infrastructure/Plugins/PluginManager.cs b/src/Squidex.Infrastructure/Plugins/PluginManager.cs index aa9fa477d..34c809c69 100644 --- a/src/Squidex.Infrastructure/Plugins/PluginManager.cs +++ b/src/Squidex.Infrastructure/Plugins/PluginManager.cs @@ -59,14 +59,14 @@ namespace Squidex.Infrastructure.Plugins exceptions.Add((plugin, action, exception)); } - public void ConfigureServices(IServiceCollection services, IConfiguration configuration) + public void ConfigureServices(IServiceCollection services, IConfiguration config) { Guard.NotNull(services, nameof(services)); - Guard.NotNull(configuration, nameof(configuration)); + Guard.NotNull(config, nameof(config)); foreach (var plugin in loadedPlugins) { - plugin.ConfigureServices(services, configuration); + plugin.ConfigureServices(services, config); } } diff --git a/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj b/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj index 5e50220ae..2ac2b92d0 100644 --- a/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj +++ b/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj @@ -13,12 +13,12 @@ - + all runtime; build; native; contentfiles; analyzers - - + + diff --git a/src/Squidex/Config/Orleans/EnvironmentWrapper.cs b/src/Squidex/Config/Orleans/EnvironmentWrapper.cs new file mode 100644 index 000000000..3e462ac92 --- /dev/null +++ b/src/Squidex/Config/Orleans/EnvironmentWrapper.cs @@ -0,0 +1,47 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using Microsoft.Extensions.FileProviders; +using Microsoft.Extensions.Hosting; +using IWebHostEnvironment = Microsoft.AspNetCore.Hosting.IHostingEnvironment; + +namespace Squidex.Config.Orleans +{ + public sealed class EnvironmentWrapper : IHostingEnvironment + { + private readonly IWebHostEnvironment nested; + + public string EnvironmentName + { + get => nested.EnvironmentName; + set => nested.EnvironmentName = value; + } + + public string ApplicationName + { + get => nested.ApplicationName; + set => nested.ApplicationName = value; + } + + public string ContentRootPath + { + get => nested.ContentRootPath; + set => nested.ContentRootPath = value; + } + + public IFileProvider ContentRootFileProvider + { + get => nested.ContentRootFileProvider; + set => nested.ContentRootFileProvider = value; + } + + public EnvironmentWrapper(IWebHostEnvironment nested) + { + this.nested = nested; + } + } +} diff --git a/src/Squidex/Config/Orleans/Extensions.cs b/src/Squidex/Config/Orleans/Extensions.cs deleted file mode 100644 index 4ecbd022f..000000000 --- a/src/Squidex/Config/Orleans/Extensions.cs +++ /dev/null @@ -1,57 +0,0 @@ -// ========================================================================== -// Squidex Headless CMS -// ========================================================================== -// Copyright (c) Squidex UG (haftungsbeschraenkt) -// All rights reserved. Licensed under the MIT license. -// ========================================================================== - -using System; -using Orleans; -using Orleans.ApplicationParts; -using Orleans.Configuration; -using Orleans.Hosting; -using OrleansDashboard; -using OrleansDashboard.Client; -using OrleansDashboard.Metrics; -using Squidex.Domain.Apps.Entities; -using Squidex.Infrastructure; - -namespace Squidex.Config.Orleans -{ - public static class Extensions - { - public static void AddMyParts(this IApplicationPartManager builder) - { - builder.AddApplicationPart(SquidexEntities.Assembly); - builder.AddApplicationPart(SquidexInfrastructure.Assembly); - } - - public static void Configure(this ClusterOptions options) - { - options.ClusterId = Constants.OrleansClusterId; - options.ServiceId = Constants.OrleansClusterId; - } - - public static ISiloHostBuilder UseDashboardEx(this ISiloHostBuilder builder, Action configurator = null) - { - builder.AddStartupTask(); - - builder.ConfigureApplicationParts(appParts => - appParts - .AddFrameworkPart(typeof(Dashboard).Assembly) - .AddFrameworkPart(typeof(DashboardClient).Assembly)); - - builder.ConfigureServices(services => - { - services.AddDashboard(options => - { - options.HostSelf = false; - }); - }); - - builder.AddIncomingGrainCallFilter(); - - return builder; - } - } -} diff --git a/src/Squidex/Config/Orleans/OrleansServices.cs b/src/Squidex/Config/Orleans/OrleansServices.cs index b6672f004..7c0cf278f 100644 --- a/src/Squidex/Config/Orleans/OrleansServices.cs +++ b/src/Squidex/Config/Orleans/OrleansServices.cs @@ -5,20 +5,22 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using System; using System.Net; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Orleans; using Orleans.Configuration; using Orleans.Hosting; +using Squidex.Domain.Apps.Entities; +using Squidex.Infrastructure; using Squidex.Infrastructure.Orleans; +using IWebHostEnvironment = Microsoft.AspNetCore.Hosting.IHostingEnvironment; namespace Squidex.Config.Orleans { public static class OrleansServices { - public static IServiceProvider AddAndBuildOrleans(this IServiceCollection services, IConfiguration config, Action afterServices) + public static IServiceCollection AddOrleans(this IServiceCollection services, IConfiguration config, IWebHostEnvironment environment) { services.Configure(options => { @@ -35,16 +37,20 @@ namespace Squidex.Config.Orleans options.HideTrace = true; }); - services.AddHostedService(); + services.AddSingleton(); - var hostBuilder = new SiloHostBuilder() - .UseDashboardEx() - .EnableDirectClient() - .AddIncomingGrainCallFilter() - .ConfigureApplicationParts(builder => - { - builder.AddMyParts(); - }); + var hostBuilder = new SiloServiceBuilder(config, environment); + + hostBuilder.UseDashboard(options => + { + options.HostSelf = false; + }); + + hostBuilder.ConfigureApplicationParts(builder => + { + builder.AddApplicationPart(SquidexEntities.Assembly); + builder.AddApplicationPart(SquidexInfrastructure.Assembly); + }); var gatewayPort = config.GetOptionalValue("orleans:gatewayPort", 40000); @@ -89,23 +95,15 @@ namespace Squidex.Config.Orleans } }); - IServiceProvider provider = null; + hostBuilder.Build(services); - hostBuilder.UseServiceProviderFactory((siloServices) => - { - foreach (var descriptor in services) - { - siloServices.Add(descriptor); - } - - afterServices(siloServices); - - provider = siloServices.BuildServiceProvider(); - - return provider; - }).Build(); + return services; + } - return provider; + public static void Configure(this ClusterOptions options) + { + options.ClusterId = Constants.OrleansClusterId; + options.ServiceId = Constants.OrleansClusterId; } } } diff --git a/src/Squidex/Config/Orleans/SiloServiceBuilder.cs b/src/Squidex/Config/Orleans/SiloServiceBuilder.cs new file mode 100644 index 000000000..081c0ea6d --- /dev/null +++ b/src/Squidex/Config/Orleans/SiloServiceBuilder.cs @@ -0,0 +1,73 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System; +using System.Collections.Generic; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Orleans; +using Orleans.Hosting; +using Squidex.Infrastructure; +using HostingBuilderContext = Microsoft.Extensions.Hosting.HostBuilderContext; +using WebHostEnvironment = Microsoft.AspNetCore.Hosting.IHostingEnvironment; + +namespace Squidex.Config.Orleans +{ + public sealed class SiloServiceBuilder : ISiloBuilder + { + private readonly HostingBuilderContext context = new HostingBuilderContext(new Dictionary()); + private readonly List> configureSiloDelegates = new List>(); + private readonly List> configureServicesDelegates = new List>(); + + public IDictionary Properties + { + get { return context.Properties; } + } + + public SiloServiceBuilder(IConfiguration config, WebHostEnvironment environment) + { + context.Configuration = config; + context.HostingEnvironment = new EnvironmentWrapper(environment); + } + + public void Build(IServiceCollection serviceCollection) + { + foreach (var configurationDelegate in configureSiloDelegates) + { + configurationDelegate(context, this); + } + + serviceCollection.AddHostedService(); + + this.ConfigureDefaults(); + this.ConfigureApplicationParts(parts => parts.ConfigureDefaults()); + + foreach (var configurationDelegate in configureServicesDelegates) + { + configurationDelegate(context, serviceCollection); + } + } + + public ISiloBuilder ConfigureSilo(Action configureDelegate) + { + Guard.NotNull(configureDelegate, nameof(configureDelegate)); + + configureSiloDelegates.Add(configureDelegate); + + return this; + } + + public ISiloBuilder ConfigureServices(Action configureDelegate) + { + Guard.NotNull(configureDelegate, nameof(configureDelegate)); + + configureServicesDelegates.Add(configureDelegate); + + return this; + } + } +} diff --git a/src/Squidex/Pipeline/Plugins/PluginExtensions.cs b/src/Squidex/Pipeline/Plugins/PluginExtensions.cs index 0ba06a608..42a07e18d 100644 --- a/src/Squidex/Pipeline/Plugins/PluginExtensions.cs +++ b/src/Squidex/Pipeline/Plugins/PluginExtensions.cs @@ -35,11 +35,11 @@ namespace Squidex.Pipeline.Plugins typeof(SquidexInfrastructure) }; - public static IMvcBuilder AddMyPlugins(this IMvcBuilder mvcBuilder, IConfiguration configuration) + public static IMvcBuilder AddMyPlugins(this IMvcBuilder mvcBuilder, IConfiguration config) { var pluginManager = new PluginManager(); - var options = configuration.Get(); + var options = config.Get(); if (options.Plugins != null) { @@ -74,7 +74,7 @@ namespace Squidex.Pipeline.Plugins } } - pluginManager.ConfigureServices(mvcBuilder.Services, configuration); + pluginManager.ConfigureServices(mvcBuilder.Services, config); mvcBuilder.Services.AddSingleton(pluginManager); diff --git a/src/Squidex/Squidex.csproj b/src/Squidex/Squidex.csproj index 8149d5ae7..f53191dbd 100644 --- a/src/Squidex/Squidex.csproj +++ b/src/Squidex/Squidex.csproj @@ -43,9 +43,9 @@ - + - + @@ -61,18 +61,18 @@ - - - - - - - + + + + + + + - - + + - + diff --git a/src/Squidex/WebStartup.cs b/src/Squidex/WebStartup.cs index 115dbcb31..cc317832f 100644 --- a/src/Squidex/WebStartup.cs +++ b/src/Squidex/WebStartup.cs @@ -7,6 +7,7 @@ using System; using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Squidex.Areas.Api; @@ -37,17 +38,18 @@ namespace Squidex { public sealed class WebStartup { - private readonly IConfiguration configuration; + private readonly IConfiguration config; + private readonly IHostingEnvironment environment; - public WebStartup(IConfiguration configuration) + public WebStartup(IConfiguration config, IHostingEnvironment environment) { - this.configuration = configuration; + this.config = config; + + this.environment = environment; } public IServiceProvider ConfigureServices(IServiceCollection services) { - var config = configuration; - services.AddHttpClient(); services.AddLogging(); services.AddMemoryCache(); @@ -100,13 +102,12 @@ namespace Squidex services.AddHostedService(); - var provider = services.AddAndBuildOrleans(configuration, afterServices => - { - afterServices.AddHostedService(); - afterServices.AddHostedService(); - }); + services.AddOrleans(config, environment); + + services.AddHostedService(); + services.AddHostedService(); - return provider; + return services.BuildServiceProvider(); } public void Configure(IApplicationBuilder app) diff --git a/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj b/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj index eeea458b7..bd553242c 100644 --- a/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj +++ b/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj b/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj index 8c1f11e25..4c48bcdba 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj @@ -20,8 +20,8 @@ - - + + diff --git a/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj b/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj index 5053a1dc5..23cf6dbe4 100644 --- a/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj +++ b/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj b/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj index 5bf9da847..c5d586c5c 100644 --- a/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj +++ b/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj @@ -19,7 +19,7 @@ - + diff --git a/tests/Squidex.Tests/Squidex.Tests.csproj b/tests/Squidex.Tests/Squidex.Tests.csproj index a3b850682..cd75c2a1c 100644 --- a/tests/Squidex.Tests/Squidex.Tests.csproj +++ b/tests/Squidex.Tests/Squidex.Tests.csproj @@ -13,10 +13,10 @@ - - - - + + + + diff --git a/tools/Migrate_00/Migrate_00.csproj b/tools/Migrate_00/Migrate_00.csproj index 9c13dd95d..ca15a7163 100644 --- a/tools/Migrate_00/Migrate_00.csproj +++ b/tools/Migrate_00/Migrate_00.csproj @@ -6,7 +6,7 @@ 7.3 - +