Resvolution - CultureDictionaryFactoryResolver

This commit is contained in:
Stephan
2016-08-24 12:34:28 +02:00
parent 352e02f064
commit 376dec2fed
9 changed files with 18 additions and 88 deletions

View File

@@ -1,6 +1,7 @@
using System;
using LightInject;
using Umbraco.Core.Cache;
using Umbraco.Core.Dictionary;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.PropertyEditors;
using Umbraco.Core.Strings;
@@ -74,6 +75,9 @@ namespace Umbraco.Core.DependencyInjection
public static IServerRegistrar ServerRegistrar
=> Container.GetInstance<IServerRegistrar>();
public static ICultureDictionaryFactory CultureDictionaryFactory
=> Container.GetInstance<ICultureDictionaryFactory>();
#endregion
}
}

View File

@@ -1,54 +0,0 @@
using System;
using System.Linq.Expressions;
using System.ComponentModel;
using LightInject;
using Umbraco.Core.ObjectResolution;
namespace Umbraco.Core.Dictionary
{
/// <summary>
/// Resolves the current CultureDictionaryFactory
/// </summary>
public sealed class CultureDictionaryFactoryResolver : ContainerSingleObjectResolver<CultureDictionaryFactoryResolver, ICultureDictionaryFactory>
{
/// <summary>
/// Initializes the resolver to use IoC
/// </summary>
/// <param name="container"></param>
internal CultureDictionaryFactoryResolver(IServiceContainer container)
: base(container)
{ }
internal CultureDictionaryFactoryResolver(ICultureDictionaryFactory factory)
: base(factory)
{
}
/// <summary>
/// Initializes the resolver to use IoC
/// </summary>
/// <param name="container"></param>
/// <param name="implementationType"></param>
internal CultureDictionaryFactoryResolver(IServiceContainer container, Func<IServiceFactory, ICultureDictionaryFactory> implementationType)
: base(container, implementationType)
{
}
/// <summary>
/// Can be used by developers at runtime to set their ICultureDictionaryFactory at app startup
/// </summary>
/// <param name="factory"></param>
public void SetDictionaryFactory(ICultureDictionaryFactory factory)
{
Value = factory;
}
/// <summary>
/// Returns the ICultureDictionaryFactory
/// </summary>
public ICultureDictionaryFactory Factory
{
get { return Value; }
}
}
}

View File

@@ -2,6 +2,7 @@
using System.Globalization;
using System.Linq;
using System.Threading;
using Umbraco.Core.DependencyInjection;
using Umbraco.Core.Dictionary;
namespace Umbraco.Core.Services
@@ -97,13 +98,7 @@ namespace Umbraco.Core.Services
return cultureDictionary[text].IfNullOrWhiteSpace(text);
}
private static ICultureDictionary CultureDictionary
{
get
{
return _cultureDictionary
?? (_cultureDictionary = CultureDictionaryFactoryResolver.Current.Factory.CreateDictionary());
}
}
private static ICultureDictionary CultureDictionary
=> _cultureDictionary ?? (_cultureDictionary = Current.CultureDictionaryFactory.CreateDictionary());
}
}

View File

@@ -228,7 +228,6 @@
<Compile Include="DependencyInjection\ServicesCompositionRoot.cs" />
<Compile Include="DependencyInjection\WeightAttribute.cs" />
<Compile Include="DictionaryExtensions.cs" />
<Compile Include="Dictionary\CultureDictionaryFactoryResolver.cs" />
<Compile Include="Dictionary\ICultureDictionaryFactory.cs" />
<Compile Include="Events\CancellableEventArgs.cs" />
<Compile Include="Events\ContentCacheEventArgs.cs" />

View File

@@ -1,9 +1,5 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AutoMapper;
using Moq;
using NUnit.Framework;
@@ -15,11 +11,9 @@ using Umbraco.Core.Models;
using Umbraco.Core.PropertyEditors;
using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.TestHelpers.Entities;
using Umbraco.Web.Dictionary;
using Umbraco.Web.Models.ContentEditing;
using Umbraco.Web.Models.Mapping;
using umbraco;
using Umbraco.Web;
using Umbraco.Core.DependencyInjection;
using Current = Umbraco.Web.Current;
namespace Umbraco.Tests.Models.Mapping
{
@@ -30,8 +24,7 @@ namespace Umbraco.Tests.Models.Mapping
{
protected override void FreezeResolution()
{
CultureDictionaryFactoryResolver.Current = new CultureDictionaryFactoryResolver(
Mock.Of<ICultureDictionaryFactory>());
Container.RegisterSingleton<ICultureDictionaryFactory>(_ => Mock.Of<ICultureDictionaryFactory>());
base.FreezeResolution();
}

View File

@@ -2,6 +2,7 @@
using LightInject;
using Umbraco.Core;
using Umbraco.Core.Cache;
using Umbraco.Core.Dictionary;
using Umbraco.Core.Events;
using Umbraco.Core.Macros;
using Umbraco.Core.Models.PublishedContent;
@@ -228,6 +229,9 @@ namespace Umbraco.Web
public static IServerRegistrar ServerRegistrar
=> Container.GetInstance<IServerRegistrar>();
public static ICultureDictionaryFactory CultureDictionaryFactory
=> Container.GetInstance<ICultureDictionaryFactory>();
#endregion
}
}

View File

@@ -463,15 +463,6 @@ namespace Umbraco.Web.Editors
}
private ICultureDictionary CultureDictionary
{
get
{
return
_cultureDictionary ??
(_cultureDictionary = CultureDictionaryFactoryResolver.Current.Factory.CreateDictionary());
}
}
=> _cultureDictionary ?? (_cultureDictionary = Current.CultureDictionaryFactory.CreateDictionary());
}
}

View File

@@ -262,8 +262,7 @@ namespace Umbraco.Web
{
if (_cultureDictionary == null)
{
var factory = CultureDictionaryFactoryResolver.Current.Factory;
_cultureDictionary = factory.CreateDictionary();
_cultureDictionary = Current.CultureDictionaryFactory.CreateDictionary();
}
return _cultureDictionary;
}

View File

@@ -529,8 +529,7 @@ namespace Umbraco.Web
ImageUrlProviderCollectionBuilder.Register(Container)
.Append(PluginManager.ResolveImageUrlProviders());
CultureDictionaryFactoryResolver.Current = new CultureDictionaryFactoryResolver(Container);
Container.Register<ICultureDictionaryFactory, DefaultCultureDictionaryFactory>();
Container.RegisterSingleton<ICultureDictionaryFactory, DefaultCultureDictionaryFactory>();
HealthCheckCollectionBuilder.Register(Container)
.AddProducer(() => PluginManager.ResolveTypes<HealthCheck.HealthCheck>())