From a379e01578e70a15c7c3fba5dd4ecd6f742797cb Mon Sep 17 00:00:00 2001 From: Benjamin Carleski Date: Wed, 22 Jan 2020 21:43:25 -0800 Subject: [PATCH] Replace Current.Services references with DI where possible --- .../Routing/RenderRouteHandlerTests.cs | 2 +- .../TestControllerActivatorBase.cs | 2 +- .../Testing/TestingTests/MockTests.cs | 4 ++-- .../Web/Mvc/SurfaceControllerTests.cs | 2 +- src/Umbraco.Web/Compose/PublicAccessComponent.cs | 15 +++++++++++---- src/Umbraco.Web/Editors/MediaTypeController.cs | 8 +++++--- .../Macros/PublishedContentHashtableConverter.cs | 16 ++++++++-------- .../Models/Mapping/ContentMapDefinition.cs | 4 ++-- .../Models/Mapping/MediaMapDefinition.cs | 4 ++-- .../Mapping/MemberTabsAndPropertiesMapper.cs | 4 ++-- .../Models/Mapping/TabsAndPropertiesMapper.cs | 10 +++++++--- src/Umbraco.Web/Security/MembershipHelper.cs | 8 +++++--- 12 files changed, 47 insertions(+), 32 deletions(-) diff --git a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs index e1fe3d952b..4bcb08925d 100644 --- a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs +++ b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs @@ -152,7 +152,7 @@ namespace Umbraco.Tests.Routing var handler = new RenderRouteHandler(umbracoContext, new TestControllerFactory(umbracoContextAccessor, Mock.Of(), context => { var membershipHelper = new MembershipHelper( - umbracoContext.HttpContext, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), AppCaches.Disabled, Mock.Of(), ShortStringHelper); + umbracoContext.HttpContext, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), AppCaches.Disabled, Mock.Of(), ShortStringHelper, Mock.Of()); return new CustomDocumentController(Factory.GetInstance(), umbracoContextAccessor, Factory.GetInstance(), diff --git a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs index cf6438b673..17e1918d05 100644 --- a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs +++ b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs @@ -153,7 +153,7 @@ namespace Umbraco.Tests.TestHelpers.ControllerTesting urlHelper.Setup(provider => provider.GetUrl(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns(UrlInfo.Url("/hello/world/1234")); - var membershipHelper = new MembershipHelper(umbCtx.HttpContext, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), AppCaches.Disabled, Mock.Of(), new MockShortStringHelper()); + var membershipHelper = new MembershipHelper(umbCtx.HttpContext, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), AppCaches.Disabled, Mock.Of(), new MockShortStringHelper(), Mock.Of()); var umbHelper = new UmbracoHelper(Mock.Of(), Mock.Of(), diff --git a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs index 121748884a..6f807f62c5 100644 --- a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs +++ b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs @@ -71,7 +71,7 @@ namespace Umbraco.Tests.Testing.TestingTests Mock.Of(), Mock.Of(), Mock.Of(), - new MembershipHelper(umbracoContext.HttpContext, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), AppCaches.Disabled, Mock.Of(), ShortStringHelper)); + new MembershipHelper(umbracoContext.HttpContext, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), AppCaches.Disabled, Mock.Of(), ShortStringHelper, Mock.Of())); Assert.Pass(); } @@ -103,7 +103,7 @@ namespace Umbraco.Tests.Testing.TestingTests var memberService = Mock.Of(); var memberTypeService = Mock.Of(); var membershipProvider = new MembersMembershipProvider(memberService, memberTypeService, Mock.Of(), TestHelper.GetHostingEnvironment(), TestHelper.GetIpResolver()); - var membershipHelper = new MembershipHelper(umbracoContext.HttpContext, Mock.Of(), membershipProvider, Mock.Of(), memberService, memberTypeService, Mock.Of(), AppCaches.Disabled, logger, ShortStringHelper); + var membershipHelper = new MembershipHelper(umbracoContext.HttpContext, Mock.Of(), membershipProvider, Mock.Of(), memberService, memberTypeService, Mock.Of(), AppCaches.Disabled, logger, ShortStringHelper, Mock.Of()); var umbracoHelper = new UmbracoHelper(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), membershipHelper); var umbracoMapper = new UmbracoMapper(new MapDefinitionCollection(new[] { Mock.Of() })); diff --git a/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs index 0660564a52..c54192f869 100644 --- a/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs +++ b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs @@ -124,7 +124,7 @@ namespace Umbraco.Tests.Web.Mvc Mock.Of(), Mock.Of(), Mock.Of(query => query.Content(2) == content.Object), - new MembershipHelper(umbracoContext.HttpContext, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), AppCaches.Disabled, Mock.Of(), ShortStringHelper)); + new MembershipHelper(umbracoContext.HttpContext, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), AppCaches.Disabled, Mock.Of(), ShortStringHelper, Mock.Of())); var ctrl = new TestSurfaceController(umbracoContextAccessor, helper); var result = ctrl.GetContent(2) as PublishedContentResult; diff --git a/src/Umbraco.Web/Compose/PublicAccessComponent.cs b/src/Umbraco.Web/Compose/PublicAccessComponent.cs index ef7532253b..3f29e5730b 100644 --- a/src/Umbraco.Web/Compose/PublicAccessComponent.cs +++ b/src/Umbraco.Web/Compose/PublicAccessComponent.cs @@ -1,4 +1,5 @@ -using Umbraco.Core; +using System; +using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; @@ -8,15 +9,21 @@ namespace Umbraco.Web.Compose { public sealed class PublicAccessComponent : IComponent { + private readonly IPublicAccessService _publicAccessService; + public PublicAccessComponent(IPublicAccessService publicAccessService) + { + _publicAccessService = publicAccessService ?? throw new ArgumentNullException(nameof(publicAccessService)); + } + public void Initialize() { - MemberGroupService.Saved += MemberGroupService_Saved; + MemberGroupService.Saved += (s, e) => MemberGroupService_Saved(s, e, _publicAccessService); } public void Terminate() { } - static void MemberGroupService_Saved(IMemberGroupService sender, Core.Events.SaveEventArgs e) + static void MemberGroupService_Saved(IMemberGroupService sender, Core.Events.SaveEventArgs e, IPublicAccessService publicAccessService) { foreach (var grp in e.SavedEntities) { @@ -26,7 +33,7 @@ namespace Umbraco.Web.Compose && grp.AdditionalData["previousName"].ToString().IsNullOrWhiteSpace() == false && grp.AdditionalData["previousName"].ToString() != grp.Name) { - Current.Services.PublicAccessService.RenameMemberGroupRoleRules(grp.AdditionalData["previousName"].ToString(), grp.Name); + publicAccessService.RenameMemberGroupRoleRules(grp.AdditionalData["previousName"].ToString(), grp.Name); } } } diff --git a/src/Umbraco.Web/Editors/MediaTypeController.cs b/src/Umbraco.Web/Editors/MediaTypeController.cs index bbfef7414f..503d5fc8e0 100644 --- a/src/Umbraco.Web/Editors/MediaTypeController.cs +++ b/src/Umbraco.Web/Editors/MediaTypeController.cs @@ -39,11 +39,13 @@ namespace Umbraco.Web.Editors public class MediaTypeController : ContentTypeControllerBase { private readonly IShortStringHelper _shortStringHelper; + private readonly IEntityService _entityService; - public MediaTypeController(ICultureDictionary cultureDictionary, IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper, IShortStringHelper shortStringHelper, UmbracoMapper umbracoMapper) + public MediaTypeController(ICultureDictionary cultureDictionary, IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper, IShortStringHelper shortStringHelper, UmbracoMapper umbracoMapper, IEntityService entityService) : base(cultureDictionary, globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper, shortStringHelper, umbracoMapper) { _shortStringHelper = shortStringHelper; + _entityService = entityService ?? throw new ArgumentNullException(nameof(entityService)); } /// @@ -270,7 +272,7 @@ namespace Umbraco.Web.Editors [UmbracoTreeAuthorize(Constants.Trees.MediaTypes, Constants.Trees.Media)] public IEnumerable GetAllowedChildren(Guid contentId) { - var entity = Current.Services.EntityService.Get(contentId); + var entity = _entityService.Get(contentId); if (entity != null) { return GetAllowedChildren(entity.Id); @@ -289,7 +291,7 @@ namespace Umbraco.Web.Editors var guidUdi = contentId as GuidUdi; if (guidUdi != null) { - var entity = Current.Services.EntityService.Get(guidUdi.Guid); + var entity = _entityService.Get(guidUdi.Guid); if (entity != null) { return GetAllowedChildren(entity.Id); diff --git a/src/Umbraco.Web/Macros/PublishedContentHashtableConverter.cs b/src/Umbraco.Web/Macros/PublishedContentHashtableConverter.cs index 97d4d2db79..be284c1bb3 100644 --- a/src/Umbraco.Web/Macros/PublishedContentHashtableConverter.cs +++ b/src/Umbraco.Web/Macros/PublishedContentHashtableConverter.cs @@ -77,8 +77,8 @@ namespace Umbraco.Web.Macros /// The content. /// /// This is for usage only. - internal PublishedContentHashtableConverter(IContent content, IVariationContextAccessor variationContextAccessor, IUserService userService, IShortStringHelper shortStringHelper) - : this(new PagePublishedContent(content, variationContextAccessor, userService, shortStringHelper)) + internal PublishedContentHashtableConverter(IContent content, IVariationContextAccessor variationContextAccessor, IUserService userService, IShortStringHelper shortStringHelper, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider, IPublishedContentTypeFactory publishedContentTypeFactory, UrlSegmentProviderCollection urlSegmentProviders) + : this(new PagePublishedContent(content, variationContextAccessor, userService, shortStringHelper, contentTypeBaseServiceProvider, publishedContentTypeFactory, urlSegmentProviders)) { } #endregion @@ -186,6 +186,7 @@ namespace Umbraco.Web.Macros private IReadOnlyDictionary _cultureInfos; private readonly IVariationContextAccessor _variationContextAccessor; private readonly IShortStringHelper _shortStringHelper; + private readonly UrlSegmentProviderCollection _urlSegmentProviders; private static readonly IReadOnlyDictionary NoCultureInfos = new Dictionary(); @@ -194,11 +195,12 @@ namespace Umbraco.Web.Macros Id = id; } - public PagePublishedContent(IContent inner, IVariationContextAccessor variationContextAccessor, IUserService userService, IShortStringHelper shortStringHelper) + public PagePublishedContent(IContent inner, IVariationContextAccessor variationContextAccessor, IUserService userService, IShortStringHelper shortStringHelper, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider, IPublishedContentTypeFactory publishedContentTypeFactory, UrlSegmentProviderCollection urlSegmentProviders) { _inner = inner ?? throw new ArgumentNullException(nameof(inner)); _variationContextAccessor = variationContextAccessor; _shortStringHelper = shortStringHelper ?? throw new ArgumentNullException(nameof(shortStringHelper)); + _urlSegmentProviders = urlSegmentProviders ?? throw new ArgumentNullException(nameof(urlSegmentProviders)); Id = _inner.Id; Key = _inner.Key; @@ -206,9 +208,8 @@ namespace Umbraco.Web.Macros CreatorName = _inner.GetCreatorProfile(userService)?.Name; WriterName = _inner.GetWriterProfile(userService)?.Name; - // TODO: inject - var contentType = Current.Services.ContentTypeBaseServices.GetContentTypeOf(_inner); - ContentType = Current.PublishedContentTypeFactory.CreateContentType(contentType); + var contentType = contentTypeBaseServiceProvider.GetContentTypeOf(_inner); + ContentType = publishedContentTypeFactory.CreateContentType(contentType); _properties = ContentType.PropertyTypes .Select(x => @@ -244,9 +245,8 @@ namespace Umbraco.Web.Macros if (_cultureInfos != null) return _cultureInfos; - var urlSegmentProviders = Current.UrlSegmentProviders; // TODO inject return _cultureInfos = _inner.PublishCultureInfos.Values - .ToDictionary(x => x.Culture, x => new PublishedCultureInfo(x.Culture, x.Name, _inner.GetUrlSegment(_shortStringHelper, urlSegmentProviders, x.Culture), x.Date)); + .ToDictionary(x => x.Culture, x => new PublishedCultureInfo(x.Culture, x.Name, _inner.GetUrlSegment(_shortStringHelper, _urlSegmentProviders, x.Culture), x.Date)); } } diff --git a/src/Umbraco.Web/Models/Mapping/ContentMapDefinition.cs b/src/Umbraco.Web/Models/Mapping/ContentMapDefinition.cs index 24afd68a87..582a930b9f 100644 --- a/src/Umbraco.Web/Models/Mapping/ContentMapDefinition.cs +++ b/src/Umbraco.Web/Models/Mapping/ContentMapDefinition.cs @@ -38,7 +38,7 @@ namespace Umbraco.Web.Models.Mapping public ContentMapDefinition(CommonMapper commonMapper, ICultureDictionary cultureDictionary, ILocalizedTextService localizedTextService, IContentService contentService, IContentTypeService contentTypeService, IFileService fileService, IUmbracoContextAccessor umbracoContextAccessor, IPublishedRouter publishedRouter, ILocalizationService localizationService, ILogger logger, - IUserService userService, IVariationContextAccessor variationContextAccessor) + IUserService userService, IVariationContextAccessor variationContextAccessor, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider) { _commonMapper = commonMapper; _cultureDictionary = cultureDictionary; @@ -53,7 +53,7 @@ namespace Umbraco.Web.Models.Mapping _userService = userService; _variationContextAccessor = variationContextAccessor; - _tabsAndPropertiesMapper = new TabsAndPropertiesMapper(cultureDictionary, localizedTextService); + _tabsAndPropertiesMapper = new TabsAndPropertiesMapper(cultureDictionary, localizedTextService, contentTypeBaseServiceProvider); _stateMapper = new ContentSavedStateMapper(); _basicStateMapper = new ContentBasicSavedStateMapper(); _contentVariantMapper = new ContentVariantMapper(_localizationService); diff --git a/src/Umbraco.Web/Models/Mapping/MediaMapDefinition.cs b/src/Umbraco.Web/Models/Mapping/MediaMapDefinition.cs index 56774a0beb..bdd748883a 100644 --- a/src/Umbraco.Web/Models/Mapping/MediaMapDefinition.cs +++ b/src/Umbraco.Web/Models/Mapping/MediaMapDefinition.cs @@ -26,7 +26,7 @@ namespace Umbraco.Web.Models.Mapping private readonly IUmbracoSettingsSection _umbracoSettingsSection; public MediaMapDefinition(ICultureDictionary cultureDictionary, ILogger logger, CommonMapper commonMapper, IMediaService mediaService, IMediaTypeService mediaTypeService, - ILocalizedTextService localizedTextService, PropertyEditorCollection propertyEditorCollection, IUmbracoSettingsSection umbracoSettingsSection) + ILocalizedTextService localizedTextService, PropertyEditorCollection propertyEditorCollection, IUmbracoSettingsSection umbracoSettingsSection, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider) { _logger = logger; _commonMapper = commonMapper; @@ -35,7 +35,7 @@ namespace Umbraco.Web.Models.Mapping _propertyEditorCollection = propertyEditorCollection; _umbracoSettingsSection = umbracoSettingsSection ?? throw new ArgumentNullException(nameof(umbracoSettingsSection)); - _tabsAndPropertiesMapper = new TabsAndPropertiesMapper(cultureDictionary, localizedTextService); + _tabsAndPropertiesMapper = new TabsAndPropertiesMapper(cultureDictionary, localizedTextService, contentTypeBaseServiceProvider); } public void DefineMaps(UmbracoMapper mapper) diff --git a/src/Umbraco.Web/Models/Mapping/MemberTabsAndPropertiesMapper.cs b/src/Umbraco.Web/Models/Mapping/MemberTabsAndPropertiesMapper.cs index 8d00fd911d..7dc3d55087 100644 --- a/src/Umbraco.Web/Models/Mapping/MemberTabsAndPropertiesMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/MemberTabsAndPropertiesMapper.cs @@ -29,8 +29,8 @@ namespace Umbraco.Web.Models.Mapping private readonly IMemberGroupService _memberGroupService; private readonly IMemberPasswordConfiguration _memberPasswordConfiguration; - public MemberTabsAndPropertiesMapper(ICultureDictionary cultureDictionary, IUmbracoContextAccessor umbracoContextAccessor, ILocalizedTextService localizedTextService, IMemberTypeService memberTypeService, IMemberService memberService, IMemberGroupService memberGroupService, IMemberPasswordConfiguration memberPasswordConfiguration) - : base(cultureDictionary, localizedTextService) + public MemberTabsAndPropertiesMapper(ICultureDictionary cultureDictionary, IUmbracoContextAccessor umbracoContextAccessor, ILocalizedTextService localizedTextService, IMemberTypeService memberTypeService, IMemberService memberService, IMemberGroupService memberGroupService, IMemberPasswordConfiguration memberPasswordConfiguration, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider) + : base(cultureDictionary, localizedTextService, contentTypeBaseServiceProvider) { _umbracoContextAccessor = umbracoContextAccessor ?? throw new ArgumentNullException(nameof(umbracoContextAccessor)); _localizedTextService = localizedTextService ?? throw new ArgumentNullException(nameof(localizedTextService)); diff --git a/src/Umbraco.Web/Models/Mapping/TabsAndPropertiesMapper.cs b/src/Umbraco.Web/Models/Mapping/TabsAndPropertiesMapper.cs index 32432d74b1..ea062de9eb 100644 --- a/src/Umbraco.Web/Models/Mapping/TabsAndPropertiesMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/TabsAndPropertiesMapper.cs @@ -118,15 +118,19 @@ namespace Umbraco.Web.Models.Mapping internal class TabsAndPropertiesMapper : TabsAndPropertiesMapper where TSource : IContentBase { - public TabsAndPropertiesMapper(ICultureDictionary cultureDictionary, ILocalizedTextService localizedTextService) + private readonly IContentTypeBaseServiceProvider _contentTypeBaseServiceProvider; + + public TabsAndPropertiesMapper(ICultureDictionary cultureDictionary, ILocalizedTextService localizedTextService, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider) : base(cultureDictionary, localizedTextService) - { } + { + _contentTypeBaseServiceProvider = contentTypeBaseServiceProvider ?? throw new ArgumentNullException(nameof(contentTypeBaseServiceProvider)); + } public virtual IEnumerable> Map(TSource source, MapperContext context) { var tabs = new List>(); - var contentType = Current.Services.ContentTypeBaseServices.GetContentTypeOf(source); + var contentType = _contentTypeBaseServiceProvider.GetContentTypeOf(source); // add the tabs, for properties that belong to a tab // need to aggregate the tabs, as content.PropertyGroups contains all the composition tabs, diff --git a/src/Umbraco.Web/Security/MembershipHelper.cs b/src/Umbraco.Web/Security/MembershipHelper.cs index ddfa654340..6441b6944c 100644 --- a/src/Umbraco.Web/Security/MembershipHelper.cs +++ b/src/Umbraco.Web/Security/MembershipHelper.cs @@ -33,6 +33,7 @@ namespace Umbraco.Web.Security private readonly AppCaches _appCaches; private readonly ILogger _logger; private readonly IShortStringHelper _shortStringHelper; + private readonly IEntityService _entityService; #region Constructors @@ -47,7 +48,8 @@ namespace Umbraco.Web.Security IPublicAccessService publicAccessService, AppCaches appCaches, ILogger logger, - IShortStringHelper shortStringHelper + IShortStringHelper shortStringHelper, + IEntityService entityService ) { HttpContext = httpContext; @@ -61,6 +63,7 @@ namespace Umbraco.Web.Security _membershipProvider = membershipProvider ?? throw new ArgumentNullException(nameof(membershipProvider)); _roleProvider = roleProvider ?? throw new ArgumentNullException(nameof(roleProvider)); + _entityService = entityService ?? throw new ArgumentNullException(nameof(entityService)); } #endregion @@ -311,12 +314,11 @@ namespace Umbraco.Web.Security var umbracoType = UdiEntityTypeHelper.ToUmbracoObjectType(udi.EntityType); - var entityService = Current.Services.EntityService; switch (umbracoType) { case UmbracoObjectTypes.Member: // TODO: need to implement Get(guid)! - var memberAttempt = entityService.GetId(guidUdi.Guid, umbracoType); + var memberAttempt = _entityService.GetId(guidUdi.Guid, umbracoType); if (memberAttempt.Success) return GetById(memberAttempt.Result); break;