diff --git a/src/Umbraco.Core/Composing/ComponentComposer.cs b/src/Umbraco.Core/Composing/ComponentComposer.cs index 54b895ce49..c1d921df03 100644 --- a/src/Umbraco.Core/Composing/ComponentComposer.cs +++ b/src/Umbraco.Core/Composing/ComponentComposer.cs @@ -1,4 +1,4 @@ -using Umbraco.Cms.Core.DependencyInjection; +using Umbraco.Cms.Core.DependencyInjection; namespace Umbraco.Cms.Core.Composing { @@ -12,7 +12,7 @@ namespace Umbraco.Cms.Core.Composing /// public virtual void Compose(IUmbracoBuilder builder) { - builder.Components()?.Append(); + builder.Components().Append(); } // note: thanks to this class, a component that does not compose anything can be diff --git a/src/Umbraco.Core/DependencyInjection/IUmbracoBuilder.cs b/src/Umbraco.Core/DependencyInjection/IUmbracoBuilder.cs index 521f55dbef..59f06801ff 100644 --- a/src/Umbraco.Core/DependencyInjection/IUmbracoBuilder.cs +++ b/src/Umbraco.Core/DependencyInjection/IUmbracoBuilder.cs @@ -33,7 +33,7 @@ namespace Umbraco.Cms.Core.DependencyInjection IProfiler Profiler { get; } AppCaches AppCaches { get; } - TBuilder? WithCollectionBuilder() where TBuilder : ICollectionBuilder; + TBuilder WithCollectionBuilder() where TBuilder : ICollectionBuilder; void Build(); } } diff --git a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.CollectionBuilders.cs b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.CollectionBuilders.cs index cb40974375..cba4a95c8e 100644 --- a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.CollectionBuilders.cs +++ b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.CollectionBuilders.cs @@ -1,4 +1,3 @@ -using System; using Umbraco.Cms.Core.Composing; using Umbraco.Cms.Core.Dashboards; using Umbraco.Cms.Core.Media; @@ -21,7 +20,7 @@ namespace Umbraco.Cms.Core.DependencyInjection public static IUmbracoBuilder AddComponent(this IUmbracoBuilder builder) where T : class, IComponent { - builder.Components()?.Append(); + builder.Components().Append(); return builder; } @@ -33,7 +32,7 @@ namespace Umbraco.Cms.Core.DependencyInjection public static IUmbracoBuilder AddContentApp(this IUmbracoBuilder builder) where T : class, IContentAppFactory { - builder.ContentApps()?.Append(); + builder.ContentApps().Append(); return builder; } @@ -45,7 +44,7 @@ namespace Umbraco.Cms.Core.DependencyInjection public static IUmbracoBuilder AddContentFinder(this IUmbracoBuilder builder) where T : class, IContentFinder { - builder.ContentFinders()?.Append(); + builder.ContentFinders().Append(); return builder; } @@ -57,7 +56,7 @@ namespace Umbraco.Cms.Core.DependencyInjection public static IUmbracoBuilder AddDashboard(this IUmbracoBuilder builder) where T : class, IDashboard { - builder.Dashboards()?.Add(); + builder.Dashboards().Add(); return builder; } @@ -69,7 +68,7 @@ namespace Umbraco.Cms.Core.DependencyInjection public static IUmbracoBuilder AddMediaUrlProvider(this IUmbracoBuilder builder) where T : class, IMediaUrlProvider { - builder.MediaUrlProviders()?.Append(); + builder.MediaUrlProviders().Append(); return builder; } @@ -81,7 +80,7 @@ namespace Umbraco.Cms.Core.DependencyInjection public static IUmbracoBuilder AddEmbedProvider(this IUmbracoBuilder builder) where T : class, IEmbedProvider { - builder.EmbedProviders()?.Append(); + builder.EmbedProviders().Append(); return builder; } @@ -97,7 +96,7 @@ namespace Umbraco.Cms.Core.DependencyInjection public static IUmbracoBuilder AddSection(this IUmbracoBuilder builder) where T : class, ISection { - builder.Sections()?.Append(); + builder.Sections().Append(); return builder; } @@ -109,7 +108,7 @@ namespace Umbraco.Cms.Core.DependencyInjection public static IUmbracoBuilder AddUrlProvider(this IUmbracoBuilder builder) where T : class, IUrlProvider { - builder.UrlProviders()?.Append(); + builder.UrlProviders().Append(); return builder; } } diff --git a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Collections.cs b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Collections.cs index b1913037a3..a7d7aaaded 100644 --- a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Collections.cs +++ b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Collections.cs @@ -1,4 +1,3 @@ -using System; using Umbraco.Cms.Core.Actions; using Umbraco.Cms.Core.Cache; using Umbraco.Cms.Core.Composing; @@ -10,7 +9,6 @@ using Umbraco.Cms.Core.HealthChecks.NotificationMethods; using Umbraco.Cms.Core.Manifest; using Umbraco.Cms.Core.Mapping; using Umbraco.Cms.Core.Media.EmbedProviders; -using Umbraco.Cms.Core.Packaging; using Umbraco.Cms.Core.PropertyEditors; using Umbraco.Cms.Core.PropertyEditors.Validators; using Umbraco.Cms.Core.Routing; @@ -33,12 +31,12 @@ namespace Umbraco.Cms.Core.DependencyInjection /// internal static void AddAllCoreCollectionBuilders(this IUmbracoBuilder builder) { - builder.CacheRefreshers()?.Add(() => builder.TypeLoader.GetCacheRefreshers()); - builder.DataEditors()?.Add(() => builder.TypeLoader.GetDataEditors()); - builder.Actions()?.Add(() => builder .TypeLoader.GetActions()); + builder.CacheRefreshers().Add(() => builder.TypeLoader.GetCacheRefreshers()); + builder.DataEditors().Add(() => builder.TypeLoader.GetDataEditors()); + builder.Actions().Add(() => builder .TypeLoader.GetActions()); // register known content apps - builder.ContentApps()? + builder.ContentApps() .Append() .Append() .Append() @@ -51,24 +49,24 @@ namespace Umbraco.Cms.Core.DependencyInjection // all built-in finders in the correct order, // devs can then modify this list on application startup - builder.ContentFinders()? + builder.ContentFinders() .Append() .Append() .Append() /*.Append() // disabled, this is an odd finder */ .Append() .Append(); - builder.EditorValidators()?.Add(() => builder.TypeLoader.GetTypes()); - builder.HealthChecks()?.Add(() => builder.TypeLoader.GetTypes()); - builder.HealthCheckNotificationMethods()?.Add(() => builder.TypeLoader.GetTypes()); + builder.EditorValidators().Add(() => builder.TypeLoader.GetTypes()); + builder.HealthChecks().Add(() => builder.TypeLoader.GetTypes()); + builder.HealthCheckNotificationMethods().Add(() => builder.TypeLoader.GetTypes()); builder.TourFilters(); - builder.UrlProviders()? + builder.UrlProviders() .Append() .Append(); - builder.MediaUrlProviders()? + builder.MediaUrlProviders() .Append(); // register back office sections in the order we want them rendered - builder.Sections()? + builder.Sections() .Append() .Append() .Append() @@ -79,7 +77,7 @@ namespace Umbraco.Cms.Core.DependencyInjection .Append(); builder.Components(); // register core CMS dashboards and 3rd party types - will be ordered by weight attribute & merged with package.manifest dashboards - builder.Dashboards()? + builder.Dashboards() .Add() .Add() .Add() @@ -93,9 +91,9 @@ namespace Umbraco.Cms.Core.DependencyInjection .Add() .Add(builder.TypeLoader.GetTypes()); builder.DataValueReferenceFactories(); - builder.PropertyValueConverters()?.Append(builder.TypeLoader.GetTypes()); - builder.UrlSegmentProviders()?.Append(); - builder.ManifestValueValidators()? + builder.PropertyValueConverters().Append(builder.TypeLoader.GetTypes()); + builder.UrlSegmentProviders().Append(); + builder.ManifestValueValidators() .Add() .Add() .Add() @@ -105,7 +103,7 @@ namespace Umbraco.Cms.Core.DependencyInjection builder.ManifestFilters(); builder.MediaUrlGenerators(); // register OEmbed providers - no type scanning - all explicit opt-in of adding types, IEmbedProvider is not IDiscoverable - builder.EmbedProviders()? + builder.EmbedProviders() .Append() .Append() .Append() @@ -120,7 +118,7 @@ namespace Umbraco.Cms.Core.DependencyInjection .Append() .Append() .Append(); - builder.SearchableTrees()?.Add(() => builder.TypeLoader.GetTypes()); + builder.SearchableTrees().Add(() => builder.TypeLoader.GetTypes()); builder.BackOfficeAssets(); } @@ -128,141 +126,141 @@ namespace Umbraco.Cms.Core.DependencyInjection /// Gets the actions collection builder. /// /// The builder. - public static ActionCollectionBuilder? Actions(this IUmbracoBuilder builder) + public static ActionCollectionBuilder Actions(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the content apps collection builder. /// /// The builder. - public static ContentAppFactoryCollectionBuilder? ContentApps(this IUmbracoBuilder builder) + public static ContentAppFactoryCollectionBuilder ContentApps(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the content finders collection builder. /// /// The builder. - public static ContentFinderCollectionBuilder? ContentFinders(this IUmbracoBuilder builder) + public static ContentFinderCollectionBuilder ContentFinders(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the editor validators collection builder. /// /// The builder. - public static EditorValidatorCollectionBuilder? EditorValidators(this IUmbracoBuilder builder) + public static EditorValidatorCollectionBuilder EditorValidators(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the health checks collection builder. /// /// The builder. - public static HealthCheckCollectionBuilder? HealthChecks(this IUmbracoBuilder builder) + public static HealthCheckCollectionBuilder HealthChecks(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); - public static HealthCheckNotificationMethodCollectionBuilder? HealthCheckNotificationMethods(this IUmbracoBuilder builder) + public static HealthCheckNotificationMethodCollectionBuilder HealthCheckNotificationMethods(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the TourFilters collection builder. /// - public static TourFilterCollectionBuilder? TourFilters(this IUmbracoBuilder builder) + public static TourFilterCollectionBuilder TourFilters(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the URL providers collection builder. /// /// The builder. - public static UrlProviderCollectionBuilder? UrlProviders(this IUmbracoBuilder builder) + public static UrlProviderCollectionBuilder UrlProviders(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the media url providers collection builder. /// /// The builder. - public static MediaUrlProviderCollectionBuilder? MediaUrlProviders(this IUmbracoBuilder builder) + public static MediaUrlProviderCollectionBuilder MediaUrlProviders(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the backoffice sections/applications collection builder. /// /// The builder. - public static SectionCollectionBuilder? Sections(this IUmbracoBuilder builder) + public static SectionCollectionBuilder Sections(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the components collection builder. /// - public static ComponentCollectionBuilder? Components(this IUmbracoBuilder builder) + public static ComponentCollectionBuilder Components(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the backoffice dashboards collection builder. /// /// The builder. - public static DashboardCollectionBuilder? Dashboards(this IUmbracoBuilder builder) + public static DashboardCollectionBuilder Dashboards(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the cache refreshers collection builder. /// /// The builder. - public static CacheRefresherCollectionBuilder? CacheRefreshers(this IUmbracoBuilder builder) + public static CacheRefresherCollectionBuilder CacheRefreshers(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the map definitions collection builder. /// /// The builder. - public static MapDefinitionCollectionBuilder? MapDefinitions(this IUmbracoBuilder builder) + public static MapDefinitionCollectionBuilder MapDefinitions(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the data editor collection builder. /// /// The builder. - public static DataEditorCollectionBuilder? DataEditors(this IUmbracoBuilder builder) + public static DataEditorCollectionBuilder DataEditors(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the data value reference factory collection builder. /// /// The builder. - public static DataValueReferenceFactoryCollectionBuilder? DataValueReferenceFactories(this IUmbracoBuilder builder) + public static DataValueReferenceFactoryCollectionBuilder DataValueReferenceFactories(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the property value converters collection builder. /// /// The builder. - public static PropertyValueConverterCollectionBuilder? PropertyValueConverters(this IUmbracoBuilder builder) + public static PropertyValueConverterCollectionBuilder PropertyValueConverters(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the url segment providers collection builder. /// /// The builder. - public static UrlSegmentProviderCollectionBuilder? UrlSegmentProviders(this IUmbracoBuilder builder) + public static UrlSegmentProviderCollectionBuilder UrlSegmentProviders(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the validators collection builder. /// /// The builder. - internal static ManifestValueValidatorCollectionBuilder? ManifestValueValidators(this IUmbracoBuilder builder) + internal static ManifestValueValidatorCollectionBuilder ManifestValueValidators(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the manifest filter collection builder. /// /// The builder. - public static ManifestFilterCollectionBuilder? ManifestFilters(this IUmbracoBuilder builder) + public static ManifestFilterCollectionBuilder ManifestFilters(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the content finders collection builder. /// /// The builder. - public static MediaUrlGeneratorCollectionBuilder? MediaUrlGenerators(this IUmbracoBuilder builder) + public static MediaUrlGeneratorCollectionBuilder MediaUrlGenerators(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// @@ -270,26 +268,26 @@ namespace Umbraco.Cms.Core.DependencyInjection /// /// The builder. [Obsolete("Use EmbedProviders() instead")] - public static EmbedProvidersCollectionBuilder? OEmbedProviders(this IUmbracoBuilder builder) + public static EmbedProvidersCollectionBuilder OEmbedProviders(this IUmbracoBuilder builder) => EmbedProviders(builder); /// /// Gets the backoffice Embed Providers collection builder. /// /// The builder. - public static EmbedProvidersCollectionBuilder? EmbedProviders(this IUmbracoBuilder builder) + public static EmbedProvidersCollectionBuilder EmbedProviders(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the back office searchable tree collection builder /// - public static SearchableTreeCollectionBuilder? SearchableTrees(this IUmbracoBuilder builder) + public static SearchableTreeCollectionBuilder SearchableTrees(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); /// /// Gets the back office custom assets collection builder /// - public static CustomBackOfficeAssetsCollectionBuilder? BackOfficeAssets(this IUmbracoBuilder builder) + public static CustomBackOfficeAssetsCollectionBuilder BackOfficeAssets(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); } } diff --git a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs index 4a05cb0268..75b4bb4aec 100644 --- a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs +++ b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs @@ -1,8 +1,6 @@ // Copyright (c) Umbraco. // See LICENSE for more details. -using System; -using System.Collections.Generic; using System.Runtime.InteropServices; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -25,7 +23,6 @@ using Umbraco.Cms.Core.Install; using Umbraco.Cms.Core.IO; using Umbraco.Cms.Core.Logging; using Umbraco.Cms.Core.Mail; -using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.PublishedContent; using Umbraco.Cms.Core.Notifications; using Umbraco.Cms.Core.Packaging; @@ -48,7 +45,7 @@ namespace Umbraco.Cms.Core.DependencyInjection { public class UmbracoBuilder : IUmbracoBuilder { - private readonly Dictionary _builders = new Dictionary(); + private readonly Dictionary _builders = new Dictionary(); public IServiceCollection Services { get; } @@ -101,18 +98,17 @@ namespace Umbraco.Cms.Core.DependencyInjection /// /// The type of the collection builder. /// The collection builder. - public TBuilder? WithCollectionBuilder() + public TBuilder WithCollectionBuilder() where TBuilder : ICollectionBuilder { Type typeOfBuilder = typeof(TBuilder); if (_builders.TryGetValue(typeOfBuilder, out ICollectionBuilder? o)) { - return (TBuilder?)o; + return (TBuilder)o; } - TBuilder? builder; - + TBuilder builder; if (typeof(TBuilder).GetConstructor(Type.EmptyTypes) != null) { builder = Activator.CreateInstance(); @@ -120,7 +116,7 @@ namespace Umbraco.Cms.Core.DependencyInjection else if (typeof(TBuilder).GetConstructor(new[] { typeof(IUmbracoBuilder) }) != null) { // Handle those collection builders which need a reference to umbraco builder i.e. DistributedLockingCollectionBuilder. - builder = (TBuilder?)Activator.CreateInstance(typeof(TBuilder), this); + builder = (TBuilder)Activator.CreateInstance(typeof(TBuilder), this)!; } else { @@ -133,9 +129,9 @@ namespace Umbraco.Cms.Core.DependencyInjection public void Build() { - foreach (ICollectionBuilder? builder in _builders.Values) + foreach (ICollectionBuilder builder in _builders.Values) { - builder?.RegisterWith(Services); + builder.RegisterWith(Services); } _builders.Clear(); diff --git a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs index 05eda0e94d..4b30a10159 100644 --- a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs +++ b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs @@ -117,7 +117,7 @@ namespace Umbraco.Cms.Infrastructure.DependencyInjection // register the manifest filter collection builder (collection is empty by default) builder.ManifestFilters(); - builder.MediaUrlGenerators()? + builder.MediaUrlGenerators() .Add() .Add(); @@ -147,7 +147,7 @@ namespace Umbraco.Cms.Infrastructure.DependencyInjection // both TinyMceValueConverter (in Core) and RteMacroRenderingValueConverter (in Web) will be // discovered when CoreBootManager configures the converters. We will remove the basic one defined // in core so that the more enhanced version is active. - builder.PropertyValueConverters()? + builder.PropertyValueConverters() .Remove(); // register *all* checks, except those marked [HideFromTypeFinder] of course @@ -260,7 +260,7 @@ namespace Umbraco.Cms.Infrastructure.DependencyInjection private static IUmbracoBuilder AddPreValueMigrators(this IUmbracoBuilder builder) { - builder.WithCollectionBuilder()? + builder.WithCollectionBuilder() .Append() .Append() .Append() diff --git a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.MappingProfiles.cs b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.MappingProfiles.cs index e1d58a32eb..42ce7f7932 100644 --- a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.MappingProfiles.cs +++ b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.MappingProfiles.cs @@ -16,7 +16,7 @@ namespace Umbraco.Cms.Infrastructure.DependencyInjection { builder.Services.AddUnique(); - builder.WithCollectionBuilder()? + builder.WithCollectionBuilder() .Add() .Add() .Add() diff --git a/src/Umbraco.Web.BackOffice/Extensions/WebMappingProfiles.cs b/src/Umbraco.Web.BackOffice/Extensions/WebMappingProfiles.cs index 69f4eb1a1a..efc066ea32 100644 --- a/src/Umbraco.Web.BackOffice/Extensions/WebMappingProfiles.cs +++ b/src/Umbraco.Web.BackOffice/Extensions/WebMappingProfiles.cs @@ -9,7 +9,7 @@ namespace Umbraco.Extensions { public static IUmbracoBuilder AddWebMappingProfiles(this IUmbracoBuilder builder) { - builder.WithCollectionBuilder()? + builder.WithCollectionBuilder() .Add() .Add() .Add(); diff --git a/src/Umbraco.Web.Common/DependencyInjection/UmbracoBuilderExtensions.cs b/src/Umbraco.Web.Common/DependencyInjection/UmbracoBuilderExtensions.cs index 5a889d423d..666342dc10 100644 --- a/src/Umbraco.Web.Common/DependencyInjection/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Web.Common/DependencyInjection/UmbracoBuilderExtensions.cs @@ -338,7 +338,7 @@ public static partial class UmbracoBuilderExtensions builder.Services.AddUnique(); var umbracoApiControllerTypes = builder.TypeLoader.GetUmbracoApiControllers().ToList(); - builder.WithCollectionBuilder()? + builder.WithCollectionBuilder() .Add(umbracoApiControllerTypes); builder.Services.AddSingleton(); diff --git a/src/Umbraco.Web.Website/DependencyInjection/UmbracoBuilderExtensions.cs b/src/Umbraco.Web.Website/DependencyInjection/UmbracoBuilderExtensions.cs index 89d6962b64..5260006768 100644 --- a/src/Umbraco.Web.Website/DependencyInjection/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Web.Website/DependencyInjection/UmbracoBuilderExtensions.cs @@ -25,7 +25,7 @@ public static partial class UmbracoBuilderExtensions /// public static IUmbracoBuilder AddWebsite(this IUmbracoBuilder builder) { - builder.WithCollectionBuilder()? + builder.WithCollectionBuilder() .Add(builder.TypeLoader.GetSurfaceControllers()); // Configure MVC startup options for custom view locations