From db2ad8778455fbb3a06fdef30aff0459485dc2bd Mon Sep 17 00:00:00 2001 From: Lars-Erik Aabech Date: Wed, 20 Jun 2018 19:57:42 +0200 Subject: [PATCH] Removed named service reference from repo ctors. Now registered with factory method that looks up services by name instead. --- .../RepositoryCompositionRoot.cs | 29 +++++++++++++------ src/Umbraco.Core/IO/FileSystems.cs | 3 ++ .../Repositories/Implement/AuditRepository.cs | 4 +-- .../Implement/PartialViewMacroRepository.cs | 5 ++-- .../Implement/PartialViewRepository.cs | 3 +- .../Implement/RelationRepository.cs | 4 +-- .../Implement/ScriptRepository.cs | 3 +- .../Implement/StylesheetRepository.cs | 3 +- .../Repositories/Implement/TaskRepository.cs | 4 +-- .../Implement/TaskTypeRepository.cs | 4 +-- .../Implement/TemplateRepository.cs | 5 ++-- src/Umbraco.Web/Mvc/PluginController.cs | 12 ++++---- 12 files changed, 40 insertions(+), 39 deletions(-) diff --git a/src/Umbraco.Core/Composing/CompositionRoots/RepositoryCompositionRoot.cs b/src/Umbraco.Core/Composing/CompositionRoots/RepositoryCompositionRoot.cs index 26a95af801..2323da165a 100644 --- a/src/Umbraco.Core/Composing/CompositionRoots/RepositoryCompositionRoot.cs +++ b/src/Umbraco.Core/Composing/CompositionRoots/RepositoryCompositionRoot.cs @@ -1,8 +1,12 @@ using System; using LightInject; using Umbraco.Core.Cache; +using Umbraco.Core.Configuration.UmbracoSettings; +using Umbraco.Core.IO; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.Repositories.Implement; +using Umbraco.Core.Scoping; namespace Umbraco.Core.Composing.CompositionRoots { @@ -36,7 +40,7 @@ namespace Umbraco.Core.Composing.CompositionRoots // some repositories have an annotated ctor parameter to pick the right cache helper // repositories - container.RegisterSingleton(); + container.RegisterSingleton(f => new AuditRepository(f.GetInstance(), f.GetInstance(DisabledCache), f.GetInstance())); container.RegisterSingleton(); container.RegisterSingleton(); container.RegisterSingleton(); @@ -59,23 +63,30 @@ namespace Umbraco.Core.Composing.CompositionRoots container.RegisterSingleton(); container.RegisterSingleton(); container.RegisterSingleton(); - container.RegisterSingleton(); + container.RegisterSingleton(f => new RelationRepository(f.GetInstance(), f.GetInstance(DisabledCache), f.GetInstance(), f.GetInstance())); container.RegisterSingleton(); container.RegisterSingleton(); container.RegisterSingleton(); - container.RegisterSingleton(); - container.RegisterSingleton(); - container.RegisterSingleton(); + container.RegisterSingleton(f => new TaskRepository(f.GetInstance(), f.GetInstance(DisabledCache), f.GetInstance())); + container.RegisterSingleton(f => new TaskTypeRepository(f.GetInstance(), f.GetInstance(DisabledCache), f.GetInstance())); + container.RegisterSingleton(f => new TemplateRepository( + f.GetInstance(), + f.GetInstance(), + f.GetInstance(), + f.GetInstance(), + f.GetInstance(Constants.Composing.FileSystems.MasterpageFileSystem), + f.GetInstance(Constants.Composing.FileSystems.ViewFileSystem) + )); container.RegisterSingleton(); container.RegisterSingleton(); container.RegisterSingleton(); // repositories that depend on a filesystem // these have an annotated ctor parameter to pick the right file system - container.RegisterSingleton(); - container.RegisterSingleton(); - container.RegisterSingleton(); - container.RegisterSingleton(); + container.RegisterSingleton(f => new PartialViewMacroRepository(f.GetInstance("PartialViewMacroFileSystem"))); + container.RegisterSingleton(f => new PartialViewRepository(f.GetInstance("PartialViewFileSystem"))); + container.RegisterSingleton(f => new ScriptRepository(f.GetInstance("ScriptFileSystem"), f.GetInstance())); + container.RegisterSingleton(f => new StylesheetRepository(f.GetInstance("StylesheetFileSystem"))); } } } diff --git a/src/Umbraco.Core/IO/FileSystems.cs b/src/Umbraco.Core/IO/FileSystems.cs index 5d7088b0e1..2fb5941b17 100644 --- a/src/Umbraco.Core/IO/FileSystems.cs +++ b/src/Umbraco.Core/IO/FileSystems.cs @@ -302,6 +302,9 @@ namespace Umbraco.Core.IO // could be optimized by having FileSystemWrapper inherit from ShadowWrapper, maybe var innerFs = GetUnderlyingFileSystemNoCache(alias, fallback); var shadowWrapper = new ShadowWrapper(innerFs, "typed/" + alias, () => IsScoped()); + + // fixme - switch to using container. where are these registered? + var fs = (IFileSystem) Activator.CreateInstance(typeof(TFileSystem), shadowWrapper); _wrappers.Add(shadowWrapper); // keeping a reference to the wrapper return fs; diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/AuditRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/AuditRepository.cs index e171077bb7..d643e1f5a5 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/AuditRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/AuditRepository.cs @@ -1,10 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; -using LightInject; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Composing.CompositionRoots; using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.DatabaseModelDefinitions; @@ -16,7 +14,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { internal class AuditRepository : NPocoRepositoryBase, IAuditRepository { - public AuditRepository(IScopeAccessor scopeAccessor, [Inject(RepositoryCompositionRoot.DisabledCache)] CacheHelper cache, ILogger logger) + public AuditRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger) : base(scopeAccessor, cache, logger) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewMacroRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewMacroRepository.cs index 741bb98e7c..879766fc81 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewMacroRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewMacroRepository.cs @@ -1,5 +1,4 @@ -using LightInject; -using Umbraco.Core.IO; +using Umbraco.Core.IO; using Umbraco.Core.Models; namespace Umbraco.Core.Persistence.Repositories.Implement @@ -7,7 +6,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement internal class PartialViewMacroRepository : PartialViewRepository, IPartialViewMacroRepository { - public PartialViewMacroRepository([Inject("PartialViewMacroFileSystem")] IFileSystem fileSystem) + public PartialViewMacroRepository(IFileSystem fileSystem) : base(fileSystem) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewRepository.cs index 2aa63813e5..a996251927 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewRepository.cs @@ -2,7 +2,6 @@ using System.IO; using System.Linq; using System.Text; -using LightInject; using Umbraco.Core.IO; using Umbraco.Core.Models; @@ -10,7 +9,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { internal class PartialViewRepository : FileRepository, IPartialViewRepository { - public PartialViewRepository([Inject("PartialViewFileSystem")] IFileSystem fileSystem) + public PartialViewRepository(IFileSystem fileSystem) : base(fileSystem) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs index f79344028f..bb153beda9 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs @@ -1,10 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; -using LightInject; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Composing.CompositionRoots; using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; @@ -22,7 +20,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { private readonly IRelationTypeRepository _relationTypeRepository; - public RelationRepository(IScopeAccessor scopeAccessor, [Inject(RepositoryCompositionRoot.DisabledCache)] CacheHelper cache, ILogger logger, IRelationTypeRepository relationTypeRepository) + public RelationRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger, IRelationTypeRepository relationTypeRepository) : base(scopeAccessor, cache, logger) { _relationTypeRepository = relationTypeRepository; diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/ScriptRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/ScriptRepository.cs index d5719554c9..735a1aa74f 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/ScriptRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/ScriptRepository.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using LightInject; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.IO; using Umbraco.Core.Models; @@ -16,7 +15,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { private readonly IContentSection _contentConfig; - public ScriptRepository([Inject("ScriptFileSystem")] IFileSystem fileSystem, IContentSection contentConfig) + public ScriptRepository(IFileSystem fileSystem, IContentSection contentConfig) : base(fileSystem) { _contentConfig = contentConfig ?? throw new ArgumentNullException(nameof(contentConfig)); diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/StylesheetRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/StylesheetRepository.cs index 73dcb44fef..8139f4948e 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/StylesheetRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/StylesheetRepository.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using LightInject; using Umbraco.Core.IO; using Umbraco.Core.Models; @@ -12,7 +11,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement /// internal class StylesheetRepository : FileRepository, IStylesheetRepository { - public StylesheetRepository([Inject("StylesheetFileSystem")] IFileSystem fileSystem) + public StylesheetRepository(IFileSystem fileSystem) : base(fileSystem) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/TaskRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/TaskRepository.cs index f33a1c852a..fd79c14c93 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/TaskRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/TaskRepository.cs @@ -1,10 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; -using LightInject; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Composing.CompositionRoots; using Umbraco.Core.Exceptions; using Umbraco.Core.Logging; using Umbraco.Core.Models; @@ -17,7 +15,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { internal class TaskRepository : NPocoRepositoryBase, ITaskRepository { - public TaskRepository(IScopeAccessor scopeAccessor, [Inject(RepositoryCompositionRoot.DisabledCache)] CacheHelper cache, ILogger logger) + public TaskRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger) : base(scopeAccessor, cache, logger) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/TaskTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/TaskTypeRepository.cs index abd21002a1..465474a644 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/TaskTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/TaskTypeRepository.cs @@ -1,10 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; -using LightInject; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Composing.CompositionRoots; using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Dtos; @@ -16,7 +14,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { internal class TaskTypeRepository : NPocoRepositoryBase, ITaskTypeRepository { - public TaskTypeRepository(IScopeAccessor scopeAccessor, [Inject(RepositoryCompositionRoot.DisabledCache)] CacheHelper cache, ILogger logger) + public TaskTypeRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger) : base(scopeAccessor, cache, logger) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/TemplateRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/TemplateRepository.cs index 32080c4a12..4afc1bfbdb 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/TemplateRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/TemplateRepository.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; -using LightInject; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.Configuration.UmbracoSettings; @@ -31,8 +30,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement private readonly MasterPageHelper _masterPageHelper; public TemplateRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger, ITemplatesSection templateConfig, - [Inject(Constants.Composing.FileSystems.MasterpageFileSystem)] IFileSystem masterpageFileSystem, - [Inject(Constants.Composing.FileSystems.ViewFileSystem)] IFileSystem viewFileSystem) + IFileSystem masterpageFileSystem, + IFileSystem viewFileSystem) : base(scopeAccessor, cache, logger) { _masterpagesFileSystem = masterpageFileSystem; diff --git a/src/Umbraco.Web/Mvc/PluginController.cs b/src/Umbraco.Web/Mvc/PluginController.cs index 6e44cca112..2e28e7fe2c 100644 --- a/src/Umbraco.Web/Mvc/PluginController.cs +++ b/src/Umbraco.Web/Mvc/PluginController.cs @@ -35,32 +35,32 @@ namespace Umbraco.Web.Mvc /// /// Gets or sets the Umbraco context. /// - public virtual UmbracoContext UmbracoContext { get; set; } + public virtual UmbracoContext UmbracoContext { get; } /// /// Gets or sets the database context. /// - public IUmbracoDatabaseFactory DatabaseFactory { get; set; } + public IUmbracoDatabaseFactory DatabaseFactory { get; } /// /// Gets or sets the services context. /// - public ServiceContext Services { get; set; } + public ServiceContext Services { get; } /// /// Gets or sets the application cache. /// - public CacheHelper ApplicationCache { get; set; } + public CacheHelper ApplicationCache { get; } /// /// Gets or sets the logger. /// - public ILogger Logger { get; set; } + public ILogger Logger { get; } /// /// Gets or sets the profiling logger. /// - public ProfilingLogger ProfilingLogger { get; set; } + public ProfilingLogger ProfilingLogger { get; } /// /// Gets the membership helper.