Refactored the initialization of settings and started a json schema project

This commit is contained in:
Bjarke Berg
2021-06-24 08:47:37 +02:00
parent 4c89d036ac
commit 74e2b7aca2
33 changed files with 242 additions and 31 deletions

View File

@@ -1,3 +1,5 @@
using System;
using System.Reflection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Umbraco.Cms.Core.Configuration.Models;
@@ -11,12 +13,25 @@ namespace Umbraco.Cms.Core.DependencyInjection
public static partial class UmbracoBuilderExtensions
{
private static OptionsBuilder<TOptions> AddOptions<TOptions>(IUmbracoBuilder builder, string key)
private static IUmbracoBuilder AddUmbracoOptions<TOptions>(this IUmbracoBuilder builder)
where TOptions : class
=> builder.Services.AddOptions<TOptions>()
.Bind(builder.Config.GetSection(key))
{
var umbracoOptionsAttribute = typeof(TOptions).GetCustomAttribute<UmbracoOptionsAttribute>();
if (umbracoOptionsAttribute is null)
{
throw new ArgumentException("typeof(TOptions) do not have the UmbracoOptionsAttribute");
}
builder.Services.AddOptions<TOptions>()
.Bind(builder.Config.GetSection(umbracoOptionsAttribute.ConfigurationKey),
o => o.BindNonPublicProperties = umbracoOptionsAttribute.BindNonPublicProperties)
.ValidateDataAnnotations();
return builder;
}
/// <summary>
/// Add Umbraco configuration services and options
/// </summary>
@@ -30,34 +45,33 @@ namespace Umbraco.Cms.Core.DependencyInjection
builder.Services.AddSingleton<IValidateOptions<UnattendedSettings>, UnattendedSettingsValidator>();
// Register configuration sections.
builder.Services.Configure<ModelsBuilderSettings>(builder.Config.GetSection(Constants.Configuration.ConfigModelsBuilder), o => o.BindNonPublicProperties = true);
builder.Services.Configure<ConnectionStrings>(builder.Config.GetSection("ConnectionStrings"), o => o.BindNonPublicProperties = true);
AddOptions<ActiveDirectorySettings>(builder, Constants.Configuration.ConfigActiveDirectory);
AddOptions<ContentSettings>(builder, Constants.Configuration.ConfigContent);
AddOptions<CoreDebugSettings>(builder, Constants.Configuration.ConfigCoreDebug);
AddOptions<ExceptionFilterSettings>(builder, Constants.Configuration.ConfigExceptionFilter);
AddOptions<GlobalSettings>(builder, Constants.Configuration.ConfigGlobal);
AddOptions<HealthChecksSettings>(builder, Constants.Configuration.ConfigHealthChecks);
AddOptions<HostingSettings>(builder, Constants.Configuration.ConfigHosting);
AddOptions<ImagingSettings>(builder, Constants.Configuration.ConfigImaging);
AddOptions<IndexCreatorSettings>(builder, Constants.Configuration.ConfigExamine);
AddOptions<KeepAliveSettings>(builder, Constants.Configuration.ConfigKeepAlive);
AddOptions<LoggingSettings>(builder, Constants.Configuration.ConfigLogging);
AddOptions<MemberPasswordConfigurationSettings>(builder, Constants.Configuration.ConfigMemberPassword);
AddOptions<NuCacheSettings>(builder, Constants.Configuration.ConfigNuCache);
AddOptions<RequestHandlerSettings>(builder, Constants.Configuration.ConfigRequestHandler);
AddOptions<RuntimeSettings>(builder, Constants.Configuration.ConfigRuntime);
AddOptions<SecuritySettings>(builder, Constants.Configuration.ConfigSecurity);
AddOptions<TourSettings>(builder, Constants.Configuration.ConfigTours);
AddOptions<TypeFinderSettings>(builder, Constants.Configuration.ConfigTypeFinder);
AddOptions<UserPasswordConfigurationSettings>(builder, Constants.Configuration.ConfigUserPassword);
AddOptions<WebRoutingSettings>(builder, Constants.Configuration.ConfigWebRouting);
AddOptions<UmbracoPluginSettings>(builder, Constants.Configuration.ConfigPlugins);
AddOptions<UnattendedSettings>(builder, Constants.Configuration.ConfigUnattended);
AddOptions<RichTextEditorSettings>(builder, Constants.Configuration.ConfigRichTextEditor);
AddOptions<RuntimeMinificationSettings>(builder, Constants.Configuration.ConfigRuntimeMinification);
builder
.AddUmbracoOptions<ModelsBuilderSettings>()
.AddUmbracoOptions<ConnectionStrings>()
.AddUmbracoOptions<ActiveDirectorySettings>()
.AddUmbracoOptions<ContentSettings>()
.AddUmbracoOptions<CoreDebugSettings>()
.AddUmbracoOptions<ExceptionFilterSettings>()
.AddUmbracoOptions<GlobalSettings>()
.AddUmbracoOptions<HealthChecksSettings>()
.AddUmbracoOptions<HostingSettings>()
.AddUmbracoOptions<ImagingSettings>()
.AddUmbracoOptions<IndexCreatorSettings>()
.AddUmbracoOptions<KeepAliveSettings>()
.AddUmbracoOptions<LoggingSettings>()
.AddUmbracoOptions<MemberPasswordConfigurationSettings>()
.AddUmbracoOptions<NuCacheSettings>()
.AddUmbracoOptions<RequestHandlerSettings>()
.AddUmbracoOptions<RuntimeSettings>()
.AddUmbracoOptions<SecuritySettings>()
.AddUmbracoOptions<TourSettings>()
.AddUmbracoOptions<TypeFinderSettings>()
.AddUmbracoOptions<UserPasswordConfigurationSettings>()
.AddUmbracoOptions<WebRoutingSettings>()
.AddUmbracoOptions<UmbracoPluginSettings>()
.AddUmbracoOptions<UnattendedSettings>()
.AddUmbracoOptions<RichTextEditorSettings>()
.AddUmbracoOptions<RuntimeMinificationSettings>();
return builder;
}