new IJsonSerializer, moves other base cache refresher classes

This commit is contained in:
Shannon
2019-11-07 21:28:56 +11:00
parent a9a3051af1
commit c91465e2b2
13 changed files with 63 additions and 19 deletions

View File

@@ -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<TInstanceType, TPayload> : JsonCacheRefresherBase<TInstanceType>, IPayloadCacheRefresher<TPayload>
where TInstanceType : class, ICacheRefresher
{
private readonly IJsonSerializer _serializer;
/// <summary>
/// Initializes a new instance of the <see cref="PayloadCacheRefresherBase{TInstanceType, TPayload}"/>.
/// </summary>
/// <param name="appCaches">A cache helper.</param>
protected PayloadCacheRefresherBase(AppCaches appCaches) : base(appCaches)
{ }
/// <param name="serializer"></param>
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
/// <returns>The deserialized object payload.</returns>
protected virtual TPayload[] Deserialize(string json)
{
return JsonConvert.DeserializeObject<TPayload[]>(json);
return _serializer.Deserialize<TPayload[]>(json);
}
#endregion

View File

@@ -0,0 +1,9 @@
namespace Umbraco.Core.Serialization
{
public interface IJsonSerializer
{
string Serialize(object input);
T Deserialize<T>(string input);
}
}

View File

@@ -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<IScopeProvider>(f => f.GetInstance<ScopeProvider>());
composition.RegisterUnique<IScopeAccessor>(f => f.GetInstance<ScopeProvider>());
composition.RegisterUnique<IJsonSerializer, JsonNetSerializer>();
// register database builder
// *not* a singleton, don't want to keep it around
composition.Register<DatabaseBuilder>();

View File

@@ -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<T>(string input)
{
return JsonConvert.DeserializeObject<T>(input);
}
}
}

View File

@@ -128,16 +128,13 @@
<Compile Include="Cache\FastDictionaryAppCacheBase.cs" />
<Compile Include="Cache\ObjectCacheAppCache.cs" />
<Compile Include="Compose\AuditEventsComponent.cs" />
<Compile Include="Cache\CacheRefresherCollection.cs" />
<Compile Include="Cache\CacheRefresherCollectionBuilder.cs" />
<Compile Include="Cache\FastDictionaryAppCache.cs" />
<Compile Include="Cache\FullDataSetRepositoryCachePolicy.cs" />
<Compile Include="Cache\HttpRequestAppCache.cs" />
<Compile Include="Cache\WebCachingAppCache.cs" />
<Compile Include="Cache\PayloadCacheRefresherBase.cs" />
<Compile Include="Cache\RepositoryCachePolicyBase.cs" />
<Compile Include="Cache\SingleItemsOnlyRepositoryCachePolicy.cs" />
<Compile Include="Cache\TypedCacheRefresherBase.cs" />
<Compile Include="Compose\AuditEventsComposer.cs" />
<Compile Include="Composing\ComponentComposer.cs" />
<Compile Include="Composing\ComposeAfterAttribute.cs" />
@@ -297,6 +294,7 @@
<Compile Include="PropertyEditors\PropertyValueConverterCollectionBuilder.cs" />
<Compile Include="PropertyEditors\VoidEditor.cs" />
<Compile Include="PublishedModelFactoryExtensions.cs" />
<Compile Include="Serialization\JsonNetSerializer.cs" />
<Compile Include="Services\Changes\ContentTypeChange.cs" />
<Compile Include="Services\Changes\ContentTypeChangeExtensions.cs" />
<Compile Include="Services\Changes\TreeChange.cs" />

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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<LanguageCacheRefresher>
{
public LanguageCacheRefresher(AppCaches appCaches, IPublishedSnapshotService publishedSnapshotService)
: base(appCaches)
public LanguageCacheRefresher(AppCaches appCaches, IJsonSerializer serializer, IPublishedSnapshotService publishedSnapshotService)
: base(appCaches, serializer)
{
_publishedSnapshotService = publishedSnapshotService;
}

View File

@@ -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;