diff --git a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Repositories.cs b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Repositories.cs index 7dc227f05f..13196c1879 100644 --- a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Repositories.cs +++ b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Repositories.cs @@ -1,7 +1,6 @@ using Microsoft.Extensions.DependencyInjection; using Umbraco.Cms.Core.DependencyInjection; using Umbraco.Cms.Core.Persistence.Repositories; -using Umbraco.Cms.Core.Services; using Umbraco.Cms.Infrastructure.Persistence.Repositories.Implement; using Umbraco.Extensions; @@ -36,9 +35,7 @@ namespace Umbraco.Cms.Infrastructure.DependencyInjection builder.Services.AddUnique(factory => factory.GetRequiredService()); builder.Services.AddUnique(factory => factory.GetRequiredService()); builder.Services.AddUnique(); - builder.Services.AddUnique(); - builder.Services.AddUnique(factory => factory.GetRequiredService()); - builder.Services.AddUnique(factory => factory.GetRequiredService()); + builder.Services.AddUnique(); builder.Services.AddUnique(); builder.Services.AddUnique(); builder.Services.AddUnique(); diff --git a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs index fa7453f24d..157d49fd39 100644 --- a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs +++ b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs @@ -64,16 +64,7 @@ namespace Umbraco.Cms.Infrastructure.DependencyInjection builder.Services.AddUnique(); builder.Services.AddUnique(); builder.Services.AddUnique(); - builder.Services.AddUnique(factory => new MacroService( - factory.GetRequiredService(), - factory.GetRequiredService(), - factory.GetRequiredService(), - factory.GetRequiredService(), - factory.GetRequiredService() - )); - builder.Services.AddUnique(factory => factory.GetRequiredService()); - builder.Services.AddUnique(factory => factory.GetRequiredService()); - + builder.Services.AddUnique(); builder.Services.AddUnique(); builder.Services.AddUnique(); builder.Services.AddUnique(); diff --git a/src/Umbraco.Infrastructure/Services/Implement/MacroService.cs b/src/Umbraco.Infrastructure/Services/Implement/MacroService.cs index 5693db4403..1175c08971 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/MacroService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/MacroService.cs @@ -1,14 +1,12 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; -using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Notifications; using Umbraco.Cms.Core.Persistence.Repositories; using Umbraco.Cms.Core.Scoping; -using Umbraco.Cms.Web.Common.DependencyInjection; namespace Umbraco.Cms.Core.Services.Implement { @@ -17,29 +15,16 @@ namespace Umbraco.Cms.Core.Services.Implement /// internal class MacroService : RepositoryService, IMacroWithAliasService { - private readonly IMacroWithAliasRepository _macroRepository; + private readonly IMacroRepository _macroRepository; private readonly IAuditRepository _auditRepository; - public MacroService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, - IMacroWithAliasRepository macroRepository, IAuditRepository auditRepository) + public MacroService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IMacroRepository macroRepository, IAuditRepository auditRepository) : base(provider, loggerFactory, eventMessagesFactory) { _macroRepository = macroRepository; _auditRepository = auditRepository; } - [Obsolete("Use ctor injecting IMacroWithAliasRepository instead")] - public MacroService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, - IMacroRepository macroRepository, IAuditRepository auditRepository) - : this ( - provider, - loggerFactory, - eventMessagesFactory, - StaticServiceProvider.Instance.GetRequiredService(), - auditRepository) - { - } - /// /// Gets an object by its alias /// @@ -47,9 +32,14 @@ namespace Umbraco.Cms.Core.Services.Implement /// An object public IMacro GetByAlias(string alias) { + if (_macroRepository is not IMacroWithAliasRepository macroWithAliasRepository) + { + return GetAll().First(); + } + using (var scope = ScopeProvider.CreateScope(autoComplete: true)) { - return _macroRepository.GetByAlias(alias); + return macroWithAliasRepository.GetByAlias(alias); } } @@ -76,9 +66,14 @@ namespace Umbraco.Cms.Core.Services.Implement public IEnumerable GetAll(params string[] aliases) { + if (_macroRepository is not IMacroWithAliasRepository macroWithAliasRepository) + { + return GetAll(); + } + using (var scope = ScopeProvider.CreateScope(autoComplete: true)) { - return _macroRepository.GetAllByAlias(aliases); + return macroWithAliasRepository.GetAllByAlias(aliases); } } diff --git a/src/Umbraco.Infrastructure/Templates/HtmlMacroParameterParser.cs b/src/Umbraco.Infrastructure/Templates/HtmlMacroParameterParser.cs index a4b177209e..2e1f86fc1b 100644 --- a/src/Umbraco.Infrastructure/Templates/HtmlMacroParameterParser.cs +++ b/src/Umbraco.Infrastructure/Templates/HtmlMacroParameterParser.cs @@ -14,11 +14,11 @@ namespace Umbraco.Cms.Infrastructure.Templates { public sealed class HtmlMacroParameterParser : IHtmlMacroParameterParser { - private readonly IMacroWithAliasService _macroService; + private readonly IMacroService _macroService; private readonly ILogger _logger; private readonly ParameterEditorCollection _parameterEditors; - public HtmlMacroParameterParser(IMacroWithAliasService macroService, ILogger logger, ParameterEditorCollection parameterEditors) + public HtmlMacroParameterParser(IMacroService macroService, ILogger logger, ParameterEditorCollection parameterEditors) { _macroService = macroService; _logger = logger; @@ -72,12 +72,18 @@ namespace Umbraco.Cms.Infrastructure.Templates private IEnumerable GetUmbracoEntityReferencesFromMacros(List>> macros) { + + if (_macroService is not IMacroWithAliasService macroWithAliasService) + { + yield break; + } + var uniqueMacroAliases = macros.Select(f => f.Item1).Distinct(); // TODO: Tracking Macro references // Here we are finding the used macros' Udis (there should be a Related Macro relation type - but Relations don't accept 'Macro' as an option) var foundMacroUmbracoEntityReferences = new List(); // Get all the macro configs in one hit for these unique macro aliases - this is now cached with a custom cache policy - var macroConfigs = _macroService.GetAll(uniqueMacroAliases.ToArray()); + var macroConfigs = macroWithAliasService.GetAll(uniqueMacroAliases.ToArray()); foreach (var macro in macros) {