From f03fc25b4c49718218c1d0da64739b2aa1714d10 Mon Sep 17 00:00:00 2001 From: Shannon Date: Mon, 15 Mar 2021 13:39:34 +1100 Subject: [PATCH] Splits into files, adds ICacheRefresherNotificationFactory, removes Init method --- .../Cache/ApplicationCacheRefresher.cs | 9 +- .../ApplicationCacheRefresherNotification.cs | 11 +++ src/Umbraco.Core/Cache/CacheRefresherBase.cs | 24 ++++-- .../Cache/CacheRefresherNotification.cs | 22 +++++ .../Cache/CacheRefresherNotificationBase.cs | 83 ------------------- .../CacheRefresherNotificationFactory.cs | 22 +++++ .../Cache/ContentCacheRefresher.cs | 7 +- .../ContentCacheRefresherNotification.cs | 11 +++ .../Cache/ContentTypeCacheRefresher.cs | 7 +- .../ContentTypeCacheRefresherNotification.cs | 11 +++ .../Cache/DataTypeCacheRefresher.cs | 7 +- .../DataTypeCacheRefresherNotification.cs | 11 +++ .../Cache/DictionaryCacheRefresher.cs | 6 +- .../DictionaryCacheRefresherNotification.cs | 11 +++ .../Cache/DomainCacheRefresher.cs | 7 +- .../Cache/DomainCacheRefresherNotification.cs | 11 +++ .../ICacheRefresherNotificationFactory.cs | 16 ++++ .../Cache/JsonCacheRefresherBase.cs | 11 +-- .../Cache/LanguageCacheRefresher.cs | 7 +- .../LanguageCacheRefresherNotification.cs | 11 +++ src/Umbraco.Core/Cache/MacroCacheRefresher.cs | 7 +- .../Cache/MacroCacheRefresherNotification.cs | 11 +++ src/Umbraco.Core/Cache/MediaCacheRefresher.cs | 6 +- .../Cache/MediaCacheRefresherNotification.cs | 11 +++ .../Cache/MemberCacheRefresher.cs | 4 +- .../Cache/MemberCacheRefresherNotification.cs | 11 +++ .../Cache/MemberGroupCacheRefresher.cs | 6 +- .../MemberGroupCacheRefresherNotification.cs | 11 +++ .../Cache/PayloadCacheRefresherBase.cs | 11 ++- .../Cache/PublicAccessCacheRefresher.cs | 6 +- .../PublicAccessCacheRefresherNotification.cs | 11 +++ .../Cache/RelationTypeCacheRefresher.cs | 6 +- .../RelationTypeCacheRefresherNotification.cs | 11 +++ .../Cache/TemplateCacheRefresher.cs | 6 +- .../TemplateCacheRefresherNotification.cs | 11 +++ src/Umbraco.Core/Cache/UserCacheRefresher.cs | 6 +- .../Cache/UserCacheRefresherNotification.cs | 11 +++ .../Cache/UserGroupCacheRefresher.cs | 6 +- .../UserGroupCacheRefresherNotification.cs | 11 +++ .../DependencyInjection/UmbracoBuilder.cs | 1 + 40 files changed, 318 insertions(+), 151 deletions(-) create mode 100644 src/Umbraco.Core/Cache/ApplicationCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/CacheRefresherNotification.cs delete mode 100644 src/Umbraco.Core/Cache/CacheRefresherNotificationBase.cs create mode 100644 src/Umbraco.Core/Cache/CacheRefresherNotificationFactory.cs create mode 100644 src/Umbraco.Core/Cache/ContentCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/ContentTypeCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/DataTypeCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/DictionaryCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/DomainCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/ICacheRefresherNotificationFactory.cs create mode 100644 src/Umbraco.Core/Cache/LanguageCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/MacroCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/MediaCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/MemberCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/MemberGroupCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/PublicAccessCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/RelationTypeCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/TemplateCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/UserCacheRefresherNotification.cs create mode 100644 src/Umbraco.Core/Cache/UserGroupCacheRefresherNotification.cs diff --git a/src/Umbraco.Core/Cache/ApplicationCacheRefresher.cs b/src/Umbraco.Core/Cache/ApplicationCacheRefresher.cs index b8dccd1f59..8106da11e6 100644 --- a/src/Umbraco.Core/Cache/ApplicationCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/ApplicationCacheRefresher.cs @@ -1,13 +1,14 @@ -using System; +using System; using Umbraco.Cms.Core.Events; namespace Umbraco.Cms.Core.Cache { public sealed class ApplicationCacheRefresher : CacheRefresherBase { - public ApplicationCacheRefresher(AppCaches appCaches, IEventAggregator eventAggregator) - : base(appCaches, eventAggregator) - { } + public ApplicationCacheRefresher(AppCaches appCaches, IEventAggregator eventAggregator, ICacheRefresherNotificationFactory factory) + : base(appCaches, eventAggregator, factory) + { + } #region Define diff --git a/src/Umbraco.Core/Cache/ApplicationCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/ApplicationCacheRefresherNotification.cs new file mode 100644 index 0000000000..3602a1488f --- /dev/null +++ b/src/Umbraco.Core/Cache/ApplicationCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class ApplicationCacheRefresherNotification : CacheRefresherNotification + { + public ApplicationCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/CacheRefresherBase.cs b/src/Umbraco.Core/Cache/CacheRefresherBase.cs index be4129f928..c5f3d903ab 100644 --- a/src/Umbraco.Core/Cache/CacheRefresherBase.cs +++ b/src/Umbraco.Core/Cache/CacheRefresherBase.cs @@ -1,4 +1,4 @@ -using System; +using System; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models.Entities; using Umbraco.Cms.Core.Sync; @@ -10,17 +10,18 @@ namespace Umbraco.Cms.Core.Cache /// /// The actual cache refresher type. /// The actual cache refresher type is used for strongly typed events. - public abstract class CacheRefresherBase< TNotification> : ICacheRefresher - where TNotification : CacheRefresherNotificationBase, new() + public abstract class CacheRefresherBase : ICacheRefresher + where TNotification : CacheRefresherNotification { /// /// Initializes a new instance of the . /// /// A cache helper. - protected CacheRefresherBase(AppCaches appCaches, IEventAggregator eventAggregator) + protected CacheRefresherBase(AppCaches appCaches, IEventAggregator eventAggregator, ICacheRefresherNotificationFactory factory) { AppCaches = appCaches; EventAggregator = eventAggregator; + NotificationFactory = factory; } #region Define @@ -35,6 +36,11 @@ namespace Umbraco.Cms.Core.Cache /// public abstract string Name { get; } + /// + /// Gets the for + /// + protected ICacheRefresherNotificationFactory NotificationFactory { get; } + #endregion #region Refresher @@ -44,7 +50,7 @@ namespace Umbraco.Cms.Core.Cache /// public virtual void RefreshAll() { - OnCacheUpdated(new TNotification().Init(null, MessageType.RefreshAll)); + OnCacheUpdated(NotificationFactory.Create(null, MessageType.RefreshAll)); } /// @@ -53,7 +59,7 @@ namespace Umbraco.Cms.Core.Cache /// The entity's identifier. public virtual void Refresh(int id) { - OnCacheUpdated(new TNotification().Init(id, MessageType.RefreshById)); + OnCacheUpdated(NotificationFactory.Create(id, MessageType.RefreshById)); } /// @@ -62,7 +68,7 @@ namespace Umbraco.Cms.Core.Cache /// The entity's identifier. public virtual void Refresh(Guid id) { - OnCacheUpdated(new TNotification().Init(id, MessageType.RefreshById)); + OnCacheUpdated(NotificationFactory.Create(id, MessageType.RefreshById)); } /// @@ -71,7 +77,7 @@ namespace Umbraco.Cms.Core.Cache /// The entity's identifier. public virtual void Remove(int id) { - OnCacheUpdated(new TNotification().Init(id, MessageType.RemoveById)); + OnCacheUpdated(NotificationFactory.Create(id, MessageType.RemoveById)); } #endregion @@ -100,7 +106,7 @@ namespace Umbraco.Cms.Core.Cache /// /// The event sender. /// The event arguments. - protected void OnCacheUpdated(CacheRefresherNotificationBase notification) + protected void OnCacheUpdated(CacheRefresherNotification notification) { EventAggregator.Publish(notification); } diff --git a/src/Umbraco.Core/Cache/CacheRefresherNotification.cs b/src/Umbraco.Core/Cache/CacheRefresherNotification.cs new file mode 100644 index 0000000000..442fad0147 --- /dev/null +++ b/src/Umbraco.Core/Cache/CacheRefresherNotification.cs @@ -0,0 +1,22 @@ +using System; +using Umbraco.Cms.Core.Events; +using Umbraco.Cms.Core.Sync; +using Umbraco.Extensions; + +namespace Umbraco.Cms.Core.Cache +{ + /// + /// Base class for cache refresher notifications + /// + public abstract class CacheRefresherNotification : INotification + { + public CacheRefresherNotification(object messageObject, MessageType messageType) + { + MessageObject = messageObject ?? throw new ArgumentNullException(nameof(messageObject)); + MessageType = messageType; + } + + public object MessageObject { get; } + public MessageType MessageType { get; } + } +} diff --git a/src/Umbraco.Core/Cache/CacheRefresherNotificationBase.cs b/src/Umbraco.Core/Cache/CacheRefresherNotificationBase.cs deleted file mode 100644 index 7818678cfe..0000000000 --- a/src/Umbraco.Core/Cache/CacheRefresherNotificationBase.cs +++ /dev/null @@ -1,83 +0,0 @@ -using Umbraco.Cms.Core.Events; -using Umbraco.Cms.Core.Sync; - -namespace Umbraco.Cms.Core.Cache -{ - /// - /// Event args for cache refresher updates - /// - public abstract class CacheRefresherNotificationBase : INotification - { - public CacheRefresherNotificationBase Init(object msgObject, MessageType type) - { - MessageType = type; - MessageObject = msgObject; - - return this; - } - public object MessageObject { get; private set; } - public MessageType MessageType { get; private set;} - } - public class DataTypeCacheRefresherNotification : CacheRefresherNotificationBase - { - } - - public class UserCacheRefresherNotification : CacheRefresherNotificationBase - { - } - - - public class ContentCacheRefresherNotification : CacheRefresherNotificationBase - { - } - - public class TemplateCacheRefresherNotification : CacheRefresherNotificationBase - { - } - - public class RelationTypeCacheRefresherNotification : CacheRefresherNotificationBase - { - } - - public class PublicAccessCacheRefresherNotification : CacheRefresherNotificationBase - { - } - - public class MemberGroupCacheRefresherNotification : CacheRefresherNotificationBase - { - } - - public class MemberCacheRefresherNotification : CacheRefresherNotificationBase - { - } - - public class MediaCacheRefresherNotification : CacheRefresherNotificationBase - { - } - - public class UserGroupCacheRefresherNotification : CacheRefresherNotificationBase - { - } - - public class LanguageCacheRefresherNotification : CacheRefresherNotificationBase - { - } - public class MacroCacheRefresherNotification : CacheRefresherNotificationBase - { - } - - public class DomainCacheRefresherNotification : CacheRefresherNotificationBase - { - } - - public class ContentTypeCacheRefresherNotification : CacheRefresherNotificationBase - { - } - - public class ApplicationCacheRefresherNotification : CacheRefresherNotificationBase - { - } - public class DictionaryCacheRefresherNotification : CacheRefresherNotificationBase - { - } -} diff --git a/src/Umbraco.Core/Cache/CacheRefresherNotificationFactory.cs b/src/Umbraco.Core/Cache/CacheRefresherNotificationFactory.cs new file mode 100644 index 0000000000..9e4210cd2b --- /dev/null +++ b/src/Umbraco.Core/Cache/CacheRefresherNotificationFactory.cs @@ -0,0 +1,22 @@ +using System; +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + /// + /// A that uses ActivatorUtilities to create the instances + /// + public sealed class CacheRefresherNotificationFactory : ICacheRefresherNotificationFactory + { + private readonly IServiceProvider _serviceProvider; + + public CacheRefresherNotificationFactory(IServiceProvider serviceProvider) => _serviceProvider = serviceProvider; + + /// + /// Create a using ActivatorUtilities + /// + /// The to create + public TNotification Create(object msgObject, MessageType type) where TNotification : CacheRefresherNotification + => _serviceProvider.CreateInstance(new object[] { msgObject, type }); + } +} diff --git a/src/Umbraco.Core/Cache/ContentCacheRefresher.cs b/src/Umbraco.Core/Cache/ContentCacheRefresher.cs index 42674d689b..26cf00a2d9 100644 --- a/src/Umbraco.Core/Cache/ContentCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/ContentCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using Umbraco.Cms.Core.Events; @@ -24,8 +24,9 @@ namespace Umbraco.Cms.Core.Cache IPublishedSnapshotService publishedSnapshotService, IIdKeyMap idKeyMap, IDomainService domainService, - IEventAggregator eventAggregator) - : base(appCaches, serializer, eventAggregator) + IEventAggregator eventAggregator, + ICacheRefresherNotificationFactory factory) + : base(appCaches, serializer, eventAggregator, factory) { _publishedSnapshotService = publishedSnapshotService; _idKeyMap = idKeyMap; diff --git a/src/Umbraco.Core/Cache/ContentCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/ContentCacheRefresherNotification.cs new file mode 100644 index 0000000000..dd76786393 --- /dev/null +++ b/src/Umbraco.Core/Cache/ContentCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class ContentCacheRefresherNotification : CacheRefresherNotification + { + public ContentCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/ContentTypeCacheRefresher.cs b/src/Umbraco.Core/Cache/ContentTypeCacheRefresher.cs index 00838865ce..b093df85b8 100644 --- a/src/Umbraco.Core/Cache/ContentTypeCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/ContentTypeCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; @@ -26,8 +26,9 @@ namespace Umbraco.Cms.Core.Cache IPublishedModelFactory publishedModelFactory, IIdKeyMap idKeyMap, IContentTypeCommonRepository contentTypeCommonRepository, - IEventAggregator eventAggregator) - : base(appCaches, serializer, eventAggregator) + IEventAggregator eventAggregator, + ICacheRefresherNotificationFactory factory) + : base(appCaches, serializer, eventAggregator, factory) { _publishedSnapshotService = publishedSnapshotService; _publishedModelFactory = publishedModelFactory; diff --git a/src/Umbraco.Core/Cache/ContentTypeCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/ContentTypeCacheRefresherNotification.cs new file mode 100644 index 0000000000..17bd955d03 --- /dev/null +++ b/src/Umbraco.Core/Cache/ContentTypeCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class ContentTypeCacheRefresherNotification : CacheRefresherNotification + { + public ContentTypeCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/DataTypeCacheRefresher.cs b/src/Umbraco.Core/Cache/DataTypeCacheRefresher.cs index 0eca1a0c20..dfbf9230e2 100644 --- a/src/Umbraco.Core/Cache/DataTypeCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/DataTypeCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.PublishedContent; @@ -22,8 +22,9 @@ namespace Umbraco.Cms.Core.Cache IPublishedSnapshotService publishedSnapshotService, IPublishedModelFactory publishedModelFactory, IIdKeyMap idKeyMap, - IEventAggregator eventAggregator) - : base(appCaches, serializer, eventAggregator) + IEventAggregator eventAggregator, + ICacheRefresherNotificationFactory factory) + : base(appCaches, serializer, eventAggregator, factory) { _publishedSnapshotService = publishedSnapshotService; _publishedModelFactory = publishedModelFactory; diff --git a/src/Umbraco.Core/Cache/DataTypeCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/DataTypeCacheRefresherNotification.cs new file mode 100644 index 0000000000..d64dd53431 --- /dev/null +++ b/src/Umbraco.Core/Cache/DataTypeCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class DataTypeCacheRefresherNotification : CacheRefresherNotification + { + public DataTypeCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/DictionaryCacheRefresher.cs b/src/Umbraco.Core/Cache/DictionaryCacheRefresher.cs index 8e21146a96..c812a4aadc 100644 --- a/src/Umbraco.Core/Cache/DictionaryCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/DictionaryCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; @@ -6,8 +6,8 @@ namespace Umbraco.Cms.Core.Cache { public sealed class DictionaryCacheRefresher : CacheRefresherBase { - public DictionaryCacheRefresher(AppCaches appCaches, IEventAggregator eventAggregator) - : base(appCaches, eventAggregator) + public DictionaryCacheRefresher(AppCaches appCaches, IEventAggregator eventAggregator, ICacheRefresherNotificationFactory factory) + : base(appCaches, eventAggregator , factory) { } #region Define diff --git a/src/Umbraco.Core/Cache/DictionaryCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/DictionaryCacheRefresherNotification.cs new file mode 100644 index 0000000000..57474466d0 --- /dev/null +++ b/src/Umbraco.Core/Cache/DictionaryCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class DictionaryCacheRefresherNotification : CacheRefresherNotification + { + public DictionaryCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/DomainCacheRefresher.cs b/src/Umbraco.Core/Cache/DomainCacheRefresher.cs index 098b200632..228baf4b9a 100644 --- a/src/Umbraco.Core/Cache/DomainCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/DomainCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.PublishedCache; @@ -15,8 +15,9 @@ namespace Umbraco.Cms.Core.Cache AppCaches appCaches, IJsonSerializer serializer, IPublishedSnapshotService publishedSnapshotService, - IEventAggregator eventAggregator) - : base(appCaches, serializer, eventAggregator) + IEventAggregator eventAggregator, + ICacheRefresherNotificationFactory factory) + : base(appCaches, serializer, eventAggregator, factory) { _publishedSnapshotService = publishedSnapshotService; } diff --git a/src/Umbraco.Core/Cache/DomainCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/DomainCacheRefresherNotification.cs new file mode 100644 index 0000000000..53495ec6cc --- /dev/null +++ b/src/Umbraco.Core/Cache/DomainCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class DomainCacheRefresherNotification : CacheRefresherNotification + { + public DomainCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/ICacheRefresherNotificationFactory.cs b/src/Umbraco.Core/Cache/ICacheRefresherNotificationFactory.cs new file mode 100644 index 0000000000..c79f7579a7 --- /dev/null +++ b/src/Umbraco.Core/Cache/ICacheRefresherNotificationFactory.cs @@ -0,0 +1,16 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + /// + /// Factory for creating cache refresher notification instances + /// + public interface ICacheRefresherNotificationFactory + { + /// + /// Creates a + /// + /// The to create + TNotification Create(object msgObject, MessageType type) where TNotification : CacheRefresherNotification; + } +} diff --git a/src/Umbraco.Core/Cache/JsonCacheRefresherBase.cs b/src/Umbraco.Core/Cache/JsonCacheRefresherBase.cs index 4ad5842373..f0946e0e52 100644 --- a/src/Umbraco.Core/Cache/JsonCacheRefresherBase.cs +++ b/src/Umbraco.Core/Cache/JsonCacheRefresherBase.cs @@ -1,4 +1,4 @@ -using Umbraco.Cms.Core.Events; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Serialization; using Umbraco.Cms.Core.Sync; @@ -10,7 +10,7 @@ namespace Umbraco.Cms.Core.Cache /// The actual cache refresher type. /// The actual cache refresher type is used for strongly typed events. public abstract class JsonCacheRefresherBase : CacheRefresherBase, IJsonCacheRefresher - where TNotification : CacheRefresherNotificationBase, new() + where TNotification : CacheRefresherNotification { protected IJsonSerializer JsonSerializer { get; } @@ -21,8 +21,9 @@ namespace Umbraco.Cms.Core.Cache protected JsonCacheRefresherBase( AppCaches appCaches, IJsonSerializer jsonSerializer, - IEventAggregator eventAggregator) - : base(appCaches, eventAggregator) + IEventAggregator eventAggregator, + ICacheRefresherNotificationFactory factory) + : base(appCaches, eventAggregator, factory) { JsonSerializer = jsonSerializer; } @@ -33,7 +34,7 @@ namespace Umbraco.Cms.Core.Cache /// The json payload. public virtual void Refresh(string json) { - OnCacheUpdated(new TNotification().Init(json, MessageType.RefreshByJson)); + OnCacheUpdated(NotificationFactory.Create(json, MessageType.RefreshByJson)); } #region Json diff --git a/src/Umbraco.Core/Cache/LanguageCacheRefresher.cs b/src/Umbraco.Core/Cache/LanguageCacheRefresher.cs index 1e9ff228df..fb65aaa58d 100644 --- a/src/Umbraco.Core/Cache/LanguageCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/LanguageCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.PublishedCache; @@ -14,8 +14,9 @@ namespace Umbraco.Cms.Core.Cache AppCaches appCaches, IJsonSerializer serializer, IPublishedSnapshotService publishedSnapshotService, - IEventAggregator eventAggregator) - : base(appCaches, serializer, eventAggregator) + IEventAggregator eventAggregator, + ICacheRefresherNotificationFactory factory) + : base(appCaches, serializer, eventAggregator, factory) { _publishedSnapshotService = publishedSnapshotService; } diff --git a/src/Umbraco.Core/Cache/LanguageCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/LanguageCacheRefresherNotification.cs new file mode 100644 index 0000000000..fde0090c28 --- /dev/null +++ b/src/Umbraco.Core/Cache/LanguageCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class LanguageCacheRefresherNotification : CacheRefresherNotification + { + public LanguageCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/MacroCacheRefresher.cs b/src/Umbraco.Core/Cache/MacroCacheRefresher.cs index 5e6c3294ab..fa4dca5ecc 100644 --- a/src/Umbraco.Core/Cache/MacroCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/MacroCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; @@ -12,8 +12,9 @@ namespace Umbraco.Cms.Core.Cache public MacroCacheRefresher( AppCaches appCaches, IJsonSerializer jsonSerializer, - IEventAggregator eventAggregator) - : base(appCaches, jsonSerializer, eventAggregator) + IEventAggregator eventAggregator, + ICacheRefresherNotificationFactory factory) + : base(appCaches, jsonSerializer, eventAggregator, factory) { } diff --git a/src/Umbraco.Core/Cache/MacroCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/MacroCacheRefresherNotification.cs new file mode 100644 index 0000000000..f5ca7985c8 --- /dev/null +++ b/src/Umbraco.Core/Cache/MacroCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class MacroCacheRefresherNotification : CacheRefresherNotification + { + public MacroCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/MediaCacheRefresher.cs b/src/Umbraco.Core/Cache/MediaCacheRefresher.cs index a4f424acf2..a0101ab66c 100644 --- a/src/Umbraco.Core/Cache/MediaCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/MediaCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Persistence.Repositories; @@ -15,8 +15,8 @@ namespace Umbraco.Cms.Core.Cache private readonly IPublishedSnapshotService _publishedSnapshotService; private readonly IIdKeyMap _idKeyMap; - public MediaCacheRefresher(AppCaches appCaches, IJsonSerializer serializer, IPublishedSnapshotService publishedSnapshotService, IIdKeyMap idKeyMap, IEventAggregator eventAggregator) - : base(appCaches, serializer, eventAggregator) + public MediaCacheRefresher(AppCaches appCaches, IJsonSerializer serializer, IPublishedSnapshotService publishedSnapshotService, IIdKeyMap idKeyMap, IEventAggregator eventAggregator, ICacheRefresherNotificationFactory factory) + : base(appCaches, serializer, eventAggregator, factory) { _publishedSnapshotService = publishedSnapshotService; _idKeyMap = idKeyMap; diff --git a/src/Umbraco.Core/Cache/MediaCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/MediaCacheRefresherNotification.cs new file mode 100644 index 0000000000..afdd60bb4a --- /dev/null +++ b/src/Umbraco.Core/Cache/MediaCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class MediaCacheRefresherNotification : CacheRefresherNotification + { + public MediaCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/MemberCacheRefresher.cs b/src/Umbraco.Core/Cache/MemberCacheRefresher.cs index 40f324384b..b416889363 100644 --- a/src/Umbraco.Core/Cache/MemberCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/MemberCacheRefresher.cs @@ -14,8 +14,8 @@ namespace Umbraco.Cms.Core.Cache { private readonly IIdKeyMap _idKeyMap; - public MemberCacheRefresher(AppCaches appCaches, IJsonSerializer serializer, IIdKeyMap idKeyMap, IEventAggregator eventAggregator) - : base(appCaches, serializer, eventAggregator) + public MemberCacheRefresher(AppCaches appCaches, IJsonSerializer serializer, IIdKeyMap idKeyMap, IEventAggregator eventAggregator, ICacheRefresherNotificationFactory factory) + : base(appCaches, serializer, eventAggregator, factory) { _idKeyMap = idKeyMap; } diff --git a/src/Umbraco.Core/Cache/MemberCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/MemberCacheRefresherNotification.cs new file mode 100644 index 0000000000..6154505947 --- /dev/null +++ b/src/Umbraco.Core/Cache/MemberCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class MemberCacheRefresherNotification : CacheRefresherNotification + { + public MemberCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/MemberGroupCacheRefresher.cs b/src/Umbraco.Core/Cache/MemberGroupCacheRefresher.cs index 637d4c8558..1f019e8f30 100644 --- a/src/Umbraco.Core/Cache/MemberGroupCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/MemberGroupCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Serialization; @@ -7,8 +7,8 @@ namespace Umbraco.Cms.Core.Cache { public sealed class MemberGroupCacheRefresher : PayloadCacheRefresherBase { - public MemberGroupCacheRefresher(AppCaches appCaches, IJsonSerializer jsonSerializer, IEventAggregator eventAggregator) - : base(appCaches, jsonSerializer, eventAggregator) + public MemberGroupCacheRefresher(AppCaches appCaches, IJsonSerializer jsonSerializer, IEventAggregator eventAggregator, ICacheRefresherNotificationFactory factory) + : base(appCaches, jsonSerializer, eventAggregator, factory) { } diff --git a/src/Umbraco.Core/Cache/MemberGroupCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/MemberGroupCacheRefresherNotification.cs new file mode 100644 index 0000000000..643e9bd51e --- /dev/null +++ b/src/Umbraco.Core/Cache/MemberGroupCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class MemberGroupCacheRefresherNotification : CacheRefresherNotification + { + public MemberGroupCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/PayloadCacheRefresherBase.cs b/src/Umbraco.Core/Cache/PayloadCacheRefresherBase.cs index dd11e899c0..f7867ae3fe 100644 --- a/src/Umbraco.Core/Cache/PayloadCacheRefresherBase.cs +++ b/src/Umbraco.Core/Cache/PayloadCacheRefresherBase.cs @@ -1,4 +1,4 @@ -using Umbraco.Cms.Core.Events; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Serialization; using Umbraco.Cms.Core.Sync; @@ -11,8 +11,7 @@ namespace Umbraco.Cms.Core.Cache /// The payload type. /// The actual cache refresher type is used for strongly typed events. public abstract class PayloadCacheRefresherBase : JsonCacheRefresherBase, IPayloadCacheRefresher - where TNotification : CacheRefresherNotificationBase, new() - + where TNotification : CacheRefresherNotification { /// @@ -20,8 +19,8 @@ namespace Umbraco.Cms.Core.Cache /// /// A cache helper. /// - protected PayloadCacheRefresherBase(AppCaches appCaches, IJsonSerializer serializer, IEventAggregator eventAggregator) - : base(appCaches, serializer, eventAggregator) + protected PayloadCacheRefresherBase(AppCaches appCaches, IJsonSerializer serializer, IEventAggregator eventAggregator, ICacheRefresherNotificationFactory factory) + : base(appCaches, serializer, eventAggregator, factory) { } @@ -40,7 +39,7 @@ namespace Umbraco.Cms.Core.Cache /// The payload. public virtual void Refresh(TPayload[] payloads) { - OnCacheUpdated(new TNotification().Init(payloads, MessageType.RefreshByPayload)); + OnCacheUpdated(NotificationFactory.Create(payloads, MessageType.RefreshByPayload)); } #endregion diff --git a/src/Umbraco.Core/Cache/PublicAccessCacheRefresher.cs b/src/Umbraco.Core/Cache/PublicAccessCacheRefresher.cs index 44b108fa23..d833a0aea5 100644 --- a/src/Umbraco.Core/Cache/PublicAccessCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/PublicAccessCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; @@ -6,8 +6,8 @@ namespace Umbraco.Cms.Core.Cache { public sealed class PublicAccessCacheRefresher : CacheRefresherBase { - public PublicAccessCacheRefresher(AppCaches appCaches, IEventAggregator eventAggregator) - : base(appCaches, eventAggregator) + public PublicAccessCacheRefresher(AppCaches appCaches, IEventAggregator eventAggregator, ICacheRefresherNotificationFactory factory) + : base(appCaches, eventAggregator, factory) { } #region Define diff --git a/src/Umbraco.Core/Cache/PublicAccessCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/PublicAccessCacheRefresherNotification.cs new file mode 100644 index 0000000000..d3334571b3 --- /dev/null +++ b/src/Umbraco.Core/Cache/PublicAccessCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class PublicAccessCacheRefresherNotification : CacheRefresherNotification + { + public PublicAccessCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/RelationTypeCacheRefresher.cs b/src/Umbraco.Core/Cache/RelationTypeCacheRefresher.cs index d82cef759d..6f15d09554 100644 --- a/src/Umbraco.Core/Cache/RelationTypeCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/RelationTypeCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Persistence.Repositories; @@ -7,8 +7,8 @@ namespace Umbraco.Cms.Core.Cache { public sealed class RelationTypeCacheRefresher : CacheRefresherBase { - public RelationTypeCacheRefresher(AppCaches appCaches, IEventAggregator eventAggregator) - : base(appCaches, eventAggregator) + public RelationTypeCacheRefresher(AppCaches appCaches, IEventAggregator eventAggregator, ICacheRefresherNotificationFactory factory) + : base(appCaches, eventAggregator, factory) { } #region Define diff --git a/src/Umbraco.Core/Cache/RelationTypeCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/RelationTypeCacheRefresherNotification.cs new file mode 100644 index 0000000000..851eba915d --- /dev/null +++ b/src/Umbraco.Core/Cache/RelationTypeCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class RelationTypeCacheRefresherNotification : CacheRefresherNotification + { + public RelationTypeCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/TemplateCacheRefresher.cs b/src/Umbraco.Core/Cache/TemplateCacheRefresher.cs index 6c33a44545..c098ccb967 100644 --- a/src/Umbraco.Core/Cache/TemplateCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/TemplateCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Persistence.Repositories; @@ -11,8 +11,8 @@ namespace Umbraco.Cms.Core.Cache private readonly IIdKeyMap _idKeyMap; private readonly IContentTypeCommonRepository _contentTypeCommonRepository; - public TemplateCacheRefresher(AppCaches appCaches, IIdKeyMap idKeyMap, IContentTypeCommonRepository contentTypeCommonRepository, IEventAggregator eventAggregator) - : base(appCaches, eventAggregator) + public TemplateCacheRefresher(AppCaches appCaches, IIdKeyMap idKeyMap, IContentTypeCommonRepository contentTypeCommonRepository, IEventAggregator eventAggregator, ICacheRefresherNotificationFactory factory) + : base(appCaches, eventAggregator, factory) { _idKeyMap = idKeyMap; _contentTypeCommonRepository = contentTypeCommonRepository; diff --git a/src/Umbraco.Core/Cache/TemplateCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/TemplateCacheRefresherNotification.cs new file mode 100644 index 0000000000..88ff2284cb --- /dev/null +++ b/src/Umbraco.Core/Cache/TemplateCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class TemplateCacheRefresherNotification : CacheRefresherNotification + { + public TemplateCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/UserCacheRefresher.cs b/src/Umbraco.Core/Cache/UserCacheRefresher.cs index b8fd75702e..201ecc1f19 100644 --- a/src/Umbraco.Core/Cache/UserCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/UserCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models.Membership; using Umbraco.Cms.Core.Persistence.Repositories; @@ -7,8 +7,8 @@ namespace Umbraco.Cms.Core.Cache { public sealed class UserCacheRefresher : CacheRefresherBase { - public UserCacheRefresher(AppCaches appCaches, IEventAggregator eventAggregator) - : base(appCaches, eventAggregator) + public UserCacheRefresher(AppCaches appCaches, IEventAggregator eventAggregator, ICacheRefresherNotificationFactory factory) + : base(appCaches, eventAggregator, factory) { } #region Define diff --git a/src/Umbraco.Core/Cache/UserCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/UserCacheRefresherNotification.cs new file mode 100644 index 0000000000..b91a7b93c8 --- /dev/null +++ b/src/Umbraco.Core/Cache/UserCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class UserCacheRefresherNotification : CacheRefresherNotification + { + public UserCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/Cache/UserGroupCacheRefresher.cs b/src/Umbraco.Core/Cache/UserGroupCacheRefresher.cs index f4456ef696..2d278972ec 100644 --- a/src/Umbraco.Core/Cache/UserGroupCacheRefresher.cs +++ b/src/Umbraco.Core/Cache/UserGroupCacheRefresher.cs @@ -1,4 +1,4 @@ -using System; +using System; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models.Membership; using Umbraco.Cms.Core.Persistence.Repositories; @@ -13,8 +13,8 @@ namespace Umbraco.Cms.Core.Cache /// public sealed class UserGroupCacheRefresher : CacheRefresherBase { - public UserGroupCacheRefresher(AppCaches appCaches, IEventAggregator eventAggregator) - : base(appCaches, eventAggregator) + public UserGroupCacheRefresher(AppCaches appCaches, IEventAggregator eventAggregator, ICacheRefresherNotificationFactory factory) + : base(appCaches, eventAggregator, factory) { } #region Define diff --git a/src/Umbraco.Core/Cache/UserGroupCacheRefresherNotification.cs b/src/Umbraco.Core/Cache/UserGroupCacheRefresherNotification.cs new file mode 100644 index 0000000000..a0adf915d8 --- /dev/null +++ b/src/Umbraco.Core/Cache/UserGroupCacheRefresherNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Sync; + +namespace Umbraco.Cms.Core.Cache +{ + public class UserGroupCacheRefresherNotification : CacheRefresherNotification + { + public UserGroupCacheRefresherNotification(object messageObject, MessageType messageType) : base(messageObject, messageType) + { + } + } +} diff --git a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs index 5249676fb6..82cf6ffa84 100644 --- a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs +++ b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs @@ -189,6 +189,7 @@ namespace Umbraco.Cms.Core.DependencyInjection // register distributed cache Services.AddUnique(f => new DistributedCache(f.GetRequiredService(), f.GetRequiredService())); + Services.AddUnique(); // register the http context and umbraco context accessors // we *should* use the HttpContextUmbracoContextAccessor, however there are cases when