From c91465e2b2f2c1d2e821443a52eaaf3d8009d1be Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 7 Nov 2019 21:28:56 +1100 Subject: [PATCH] new IJsonSerializer, moves other base cache refresher classes --- .../Cache/CacheRefresherCollection.cs | 0 .../Cache/PayloadCacheRefresherBase.cs | 14 ++++++++---- .../Cache/TypedCacheRefresherBase.cs | 0 .../Serialization/IJsonSerializer.cs | 9 ++++++++ .../Runtime/CoreInitialComposer.cs | 3 +++ .../Serialization/JsonNetSerializer.cs | 22 +++++++++++++++++++ src/Umbraco.Core/Umbraco.Core.csproj | 4 +--- .../Cache/ContentCacheRefresher.cs | 5 +++-- .../Cache/ContentTypeCacheRefresher.cs | 5 +++-- .../Cache/DataTypeCacheRefresher.cs | 5 +++-- src/Umbraco.Web/Cache/DomainCacheRefresher.cs | 5 +++-- .../Cache/LanguageCacheRefresher.cs | 5 +++-- src/Umbraco.Web/Cache/MediaCacheRefresher.cs | 5 +++-- 13 files changed, 63 insertions(+), 19 deletions(-) rename src/{Umbraco.Core => Umbraco.Abstractions}/Cache/CacheRefresherCollection.cs (100%) rename src/{Umbraco.Core => Umbraco.Abstractions}/Cache/PayloadCacheRefresherBase.cs (79%) rename src/{Umbraco.Core => Umbraco.Abstractions}/Cache/TypedCacheRefresherBase.cs (100%) create mode 100644 src/Umbraco.Abstractions/Serialization/IJsonSerializer.cs create mode 100644 src/Umbraco.Core/Serialization/JsonNetSerializer.cs diff --git a/src/Umbraco.Core/Cache/CacheRefresherCollection.cs b/src/Umbraco.Abstractions/Cache/CacheRefresherCollection.cs similarity index 100% rename from src/Umbraco.Core/Cache/CacheRefresherCollection.cs rename to src/Umbraco.Abstractions/Cache/CacheRefresherCollection.cs diff --git a/src/Umbraco.Core/Cache/PayloadCacheRefresherBase.cs b/src/Umbraco.Abstractions/Cache/PayloadCacheRefresherBase.cs similarity index 79% rename from src/Umbraco.Core/Cache/PayloadCacheRefresherBase.cs rename to src/Umbraco.Abstractions/Cache/PayloadCacheRefresherBase.cs index 4a3a03a0d6..1ee804bc82 100644 --- a/src/Umbraco.Core/Cache/PayloadCacheRefresherBase.cs +++ b/src/Umbraco.Abstractions/Cache/PayloadCacheRefresherBase.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json; +using System; +using Umbraco.Core.Serialization; using Umbraco.Core.Sync; namespace Umbraco.Core.Cache @@ -12,12 +13,17 @@ namespace Umbraco.Core.Cache public abstract class PayloadCacheRefresherBase : JsonCacheRefresherBase, IPayloadCacheRefresher where TInstanceType : class, ICacheRefresher { + private readonly IJsonSerializer _serializer; + /// /// Initializes a new instance of the . /// /// A cache helper. - protected PayloadCacheRefresherBase(AppCaches appCaches) : base(appCaches) - { } + /// + protected PayloadCacheRefresherBase(AppCaches appCaches, IJsonSerializer serializer) : base(appCaches) + { + _serializer = serializer ?? throw new ArgumentNullException(nameof(serializer)); + } #region Json @@ -28,7 +34,7 @@ namespace Umbraco.Core.Cache /// The deserialized object payload. protected virtual TPayload[] Deserialize(string json) { - return JsonConvert.DeserializeObject(json); + return _serializer.Deserialize(json); } #endregion diff --git a/src/Umbraco.Core/Cache/TypedCacheRefresherBase.cs b/src/Umbraco.Abstractions/Cache/TypedCacheRefresherBase.cs similarity index 100% rename from src/Umbraco.Core/Cache/TypedCacheRefresherBase.cs rename to src/Umbraco.Abstractions/Cache/TypedCacheRefresherBase.cs diff --git a/src/Umbraco.Abstractions/Serialization/IJsonSerializer.cs b/src/Umbraco.Abstractions/Serialization/IJsonSerializer.cs new file mode 100644 index 0000000000..c619f173fe --- /dev/null +++ b/src/Umbraco.Abstractions/Serialization/IJsonSerializer.cs @@ -0,0 +1,9 @@ +namespace Umbraco.Core.Serialization +{ + public interface IJsonSerializer + { + string Serialize(object input); + + T Deserialize(string input); + } +} diff --git a/src/Umbraco.Core/Runtime/CoreInitialComposer.cs b/src/Umbraco.Core/Runtime/CoreInitialComposer.cs index 1f004846d0..bc521b0328 100644 --- a/src/Umbraco.Core/Runtime/CoreInitialComposer.cs +++ b/src/Umbraco.Core/Runtime/CoreInitialComposer.cs @@ -17,6 +17,7 @@ using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.PropertyEditors; using Umbraco.Core.PropertyEditors.Validators; using Umbraco.Core.Scoping; +using Umbraco.Core.Serialization; using Umbraco.Core.Services; using Umbraco.Core.Strings; using Umbraco.Core.Sync; @@ -50,6 +51,8 @@ namespace Umbraco.Core.Runtime composition.RegisterUnique(f => f.GetInstance()); composition.RegisterUnique(f => f.GetInstance()); + composition.RegisterUnique(); + // register database builder // *not* a singleton, don't want to keep it around composition.Register(); diff --git a/src/Umbraco.Core/Serialization/JsonNetSerializer.cs b/src/Umbraco.Core/Serialization/JsonNetSerializer.cs new file mode 100644 index 0000000000..a2a5f19082 --- /dev/null +++ b/src/Umbraco.Core/Serialization/JsonNetSerializer.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json; + +namespace Umbraco.Core.Serialization +{ + public class JsonNetSerializer : IJsonSerializer + { + public string Serialize(object input) + { + return JsonConvert.SerializeObject(input); + } + + public T Deserialize(string input) + { + return JsonConvert.DeserializeObject(input); + } + } +} diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index fcc370da69..3719391e06 100755 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -128,16 +128,13 @@ - - - @@ -297,6 +294,7 @@ + diff --git a/src/Umbraco.Web/Cache/ContentCacheRefresher.cs b/src/Umbraco.Web/Cache/ContentCacheRefresher.cs index d9a6518493..0422d3c674 100644 --- a/src/Umbraco.Web/Cache/ContentCacheRefresher.cs +++ b/src/Umbraco.Web/Cache/ContentCacheRefresher.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Configuration; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.Repositories.Implement; +using Umbraco.Core.Serialization; using Umbraco.Core.Services; using Umbraco.Core.Services.Changes; using Umbraco.Web.Composing; @@ -20,8 +21,8 @@ namespace Umbraco.Web.Cache private readonly IdkMap _idkMap; private readonly IDomainService _domainService; - public ContentCacheRefresher(AppCaches appCaches, IPublishedSnapshotService publishedSnapshotService, IdkMap idkMap, IDomainService domainService) - : base(appCaches) + public ContentCacheRefresher(AppCaches appCaches, IJsonSerializer serializer, IPublishedSnapshotService publishedSnapshotService, IdkMap idkMap, IDomainService domainService) + : base(appCaches, serializer) { _publishedSnapshotService = publishedSnapshotService; _idkMap = idkMap; diff --git a/src/Umbraco.Web/Cache/ContentTypeCacheRefresher.cs b/src/Umbraco.Web/Cache/ContentTypeCacheRefresher.cs index 63cfe0df9e..655baf18bf 100644 --- a/src/Umbraco.Web/Cache/ContentTypeCacheRefresher.cs +++ b/src/Umbraco.Web/Cache/ContentTypeCacheRefresher.cs @@ -5,6 +5,7 @@ using Umbraco.Core.Cache; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Persistence.Repositories; +using Umbraco.Core.Serialization; using Umbraco.Core.Services; using Umbraco.Core.Services.Changes; using Umbraco.Web.PublishedCache; @@ -18,8 +19,8 @@ namespace Umbraco.Web.Cache private readonly IContentTypeCommonRepository _contentTypeCommonRepository; private readonly IdkMap _idkMap; - public ContentTypeCacheRefresher(AppCaches appCaches, IPublishedSnapshotService publishedSnapshotService, IPublishedModelFactory publishedModelFactory, IdkMap idkMap, IContentTypeCommonRepository contentTypeCommonRepository) - : base(appCaches) + public ContentTypeCacheRefresher(AppCaches appCaches, IJsonSerializer serializer, IPublishedSnapshotService publishedSnapshotService, IPublishedModelFactory publishedModelFactory, IdkMap idkMap, IContentTypeCommonRepository contentTypeCommonRepository) + : base(appCaches, serializer) { _publishedSnapshotService = publishedSnapshotService; _publishedModelFactory = publishedModelFactory; diff --git a/src/Umbraco.Web/Cache/DataTypeCacheRefresher.cs b/src/Umbraco.Web/Cache/DataTypeCacheRefresher.cs index c9caf5aaa7..3c83ff3027 100644 --- a/src/Umbraco.Web/Cache/DataTypeCacheRefresher.cs +++ b/src/Umbraco.Web/Cache/DataTypeCacheRefresher.cs @@ -4,6 +4,7 @@ using Umbraco.Core.Cache; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.PropertyEditors.ValueConverters; +using Umbraco.Core.Serialization; using Umbraco.Core.Services; using Umbraco.Web.PublishedCache; @@ -16,8 +17,8 @@ namespace Umbraco.Web.Cache private readonly IPublishedModelFactory _publishedModelFactory; private readonly IdkMap _idkMap; - public DataTypeCacheRefresher(AppCaches appCaches, IPublishedSnapshotService publishedSnapshotService, IPublishedModelFactory publishedModelFactory, IdkMap idkMap) - : base(appCaches) + public DataTypeCacheRefresher(AppCaches appCaches, IJsonSerializer serializer, IPublishedSnapshotService publishedSnapshotService, IPublishedModelFactory publishedModelFactory, IdkMap idkMap) + : base(appCaches, serializer) { _publishedSnapshotService = publishedSnapshotService; _publishedModelFactory = publishedModelFactory; diff --git a/src/Umbraco.Web/Cache/DomainCacheRefresher.cs b/src/Umbraco.Web/Cache/DomainCacheRefresher.cs index 4ffe4e2717..7958728765 100644 --- a/src/Umbraco.Web/Cache/DomainCacheRefresher.cs +++ b/src/Umbraco.Web/Cache/DomainCacheRefresher.cs @@ -1,6 +1,7 @@ using System; using Umbraco.Core.Cache; using Umbraco.Core.Models; +using Umbraco.Core.Serialization; using Umbraco.Core.Services.Changes; using Umbraco.Web.PublishedCache; @@ -10,8 +11,8 @@ namespace Umbraco.Web.Cache { private readonly IPublishedSnapshotService _publishedSnapshotService; - public DomainCacheRefresher(AppCaches appCaches, IPublishedSnapshotService publishedSnapshotService) - : base(appCaches) + public DomainCacheRefresher(AppCaches appCaches, IJsonSerializer serializer, IPublishedSnapshotService publishedSnapshotService) + : base(appCaches, serializer) { _publishedSnapshotService = publishedSnapshotService; } diff --git a/src/Umbraco.Web/Cache/LanguageCacheRefresher.cs b/src/Umbraco.Web/Cache/LanguageCacheRefresher.cs index b1fc0a9e55..dfb85aad6a 100644 --- a/src/Umbraco.Web/Cache/LanguageCacheRefresher.cs +++ b/src/Umbraco.Web/Cache/LanguageCacheRefresher.cs @@ -2,6 +2,7 @@ using System.Linq; using Umbraco.Core.Cache; using Umbraco.Core.Models; +using Umbraco.Core.Serialization; using Umbraco.Core.Services; using Umbraco.Core.Services.Changes; using Umbraco.Web.PublishedCache; @@ -13,8 +14,8 @@ namespace Umbraco.Web.Cache //CacheRefresherBase { - public LanguageCacheRefresher(AppCaches appCaches, IPublishedSnapshotService publishedSnapshotService) - : base(appCaches) + public LanguageCacheRefresher(AppCaches appCaches, IJsonSerializer serializer, IPublishedSnapshotService publishedSnapshotService) + : base(appCaches, serializer) { _publishedSnapshotService = publishedSnapshotService; } diff --git a/src/Umbraco.Web/Cache/MediaCacheRefresher.cs b/src/Umbraco.Web/Cache/MediaCacheRefresher.cs index 1f54b62c5b..8da643c279 100644 --- a/src/Umbraco.Web/Cache/MediaCacheRefresher.cs +++ b/src/Umbraco.Web/Cache/MediaCacheRefresher.cs @@ -6,6 +6,7 @@ using Umbraco.Core.Persistence.Repositories; using System.Linq; using System.Xml.Linq; using Umbraco.Core.Persistence.Repositories.Implement; +using Umbraco.Core.Serialization; using Umbraco.Core.Services; using Umbraco.Core.Services.Changes; using Umbraco.Web.Composing; @@ -18,8 +19,8 @@ namespace Umbraco.Web.Cache private readonly IPublishedSnapshotService _publishedSnapshotService; private readonly IdkMap _idkMap; - public MediaCacheRefresher(AppCaches appCaches, IPublishedSnapshotService publishedSnapshotService, IdkMap idkMap) - : base(appCaches) + public MediaCacheRefresher(AppCaches appCaches, IJsonSerializer serializer, IPublishedSnapshotService publishedSnapshotService, IdkMap idkMap) + : base(appCaches, serializer) { _publishedSnapshotService = publishedSnapshotService; _idkMap = idkMap;