From 11e41ee07eb67b5396dc73c586e0c34bb9d057aa Mon Sep 17 00:00:00 2001 From: Stephan Date: Fri, 23 Sep 2016 20:18:25 +0200 Subject: [PATCH] Restoring most resolvers in Compat7 --- src/Umbraco.Compat7/Compat7Component.cs | 7 +- src/Umbraco.Compat7/Core/ActionsResolver.cs | 17 +++ .../Core/Cache/CacheRefreshersResolver.cs | 22 +++ .../CultureDictionaryFactoryResolver.cs | 24 ++++ .../Core/Logging/LoggerResolver.cs | 25 ++++ .../Core/Logging/ProfilerResolver.cs | 25 ++++ .../PublishedContentModelFactoryResolver.cs | 7 +- .../LazyManyObjectsResolverBase.cs | 57 ++++++++ .../ManyObjectsResolverBase.cs | 103 +++++++++++++ .../WeightedObjectsResolverBase.cs | 103 +++++++++++++ .../Migrations/MigrationResolver.cs | 19 +++ .../PropertyEditors/PropertyEditorResolver.cs | 21 +++ .../PropertyValueConvertersResolver.cs | 12 +- .../Core/Strings/ShortStringHelperResolver.cs | 24 ++++ .../Strings/UrlSegmentProviderResolver.cs | 19 +++ .../Core/Sync/ServerMessengerResolver.cs | 24 ++++ .../Core/Sync/ServerRegistrarResolver.cs | 24 ++++ src/Umbraco.Compat7/Umbraco.Compat7.csproj | 25 ++++ .../Web/HealthCheck/HealthCheckResolver.cs | 19 +++ .../Web/Media/ThumbnailProvidersResolver.cs | 24 ++++ .../Mvc/DefaultRenderMvcControllerResolver.cs | 24 ++++ .../FilteredControllerFactoriesResolver.cs | 20 +++ .../PublishedCache/FacadeServiceResolver.cs | 5 +- .../Web/Routing/ContentFinderResolver.cs | 20 +++ .../ContentLastChangeFinderResolver.cs | 40 ++++++ .../Web/Routing/SiteDomainHelperResolver.cs | 25 ++++ .../Web/Routing/UrlProviderResolver.cs | 20 +++ src/Umbraco.Compat7/notes.txt | 7 +- src/Umbraco.Core/CoreRuntime.cs | 3 +- src/Umbraco.Core/CoreRuntimeComponent.cs | 10 +- .../CollectionBuilderBase.cs | 37 ++++- .../LazyCollectionBuilderBase.cs | 69 ++++++++- .../OrderedCollectionBuilderBase.cs | 136 +++++++++++++++--- .../WeightedCollectionBuilderBase.cs | 45 +++++- .../Migrations/MigrationCollectionBuilder.cs | 7 +- .../PropertyEditorCollectionBuilder.cs | 16 +-- .../LazyCollectionBuilderTests.cs | 12 +- .../PackageActionCollectionTests.cs | 2 +- .../Models/Mapping/AutoMapperTests.cs | 2 +- .../TestHelpers/BaseDatabaseFactoryTest.cs | 2 +- .../TestHelpers/BaseUsingSqlCeSyntax.cs | 2 +- src/Umbraco.Web/Current.cs | 6 +- .../HeathCheckCollectionBuilder.cs | 2 + .../Migrations/PostMigrationComponent.cs | 2 +- src/Umbraco.Web/WebRuntimeComponent.cs | 8 +- .../_Legacy/Actions/ActionAssignDomain.cs | 9 +- 46 files changed, 1055 insertions(+), 77 deletions(-) create mode 100644 src/Umbraco.Compat7/Core/ActionsResolver.cs create mode 100644 src/Umbraco.Compat7/Core/Cache/CacheRefreshersResolver.cs create mode 100644 src/Umbraco.Compat7/Core/Dictionary/CultureDictionaryFactoryResolver.cs create mode 100644 src/Umbraco.Compat7/Core/Logging/LoggerResolver.cs create mode 100644 src/Umbraco.Compat7/Core/Logging/ProfilerResolver.cs create mode 100644 src/Umbraco.Compat7/Core/ObjectResolution/LazyManyObjectsResolverBase.cs create mode 100644 src/Umbraco.Compat7/Core/ObjectResolution/ManyObjectsResolverBase.cs create mode 100644 src/Umbraco.Compat7/Core/ObjectResolution/WeightedObjectsResolverBase.cs create mode 100644 src/Umbraco.Compat7/Core/Persistence/Migrations/MigrationResolver.cs create mode 100644 src/Umbraco.Compat7/Core/PropertyEditors/PropertyEditorResolver.cs create mode 100644 src/Umbraco.Compat7/Core/Strings/ShortStringHelperResolver.cs create mode 100644 src/Umbraco.Compat7/Core/Strings/UrlSegmentProviderResolver.cs create mode 100644 src/Umbraco.Compat7/Core/Sync/ServerMessengerResolver.cs create mode 100644 src/Umbraco.Compat7/Core/Sync/ServerRegistrarResolver.cs create mode 100644 src/Umbraco.Compat7/Web/HealthCheck/HealthCheckResolver.cs create mode 100644 src/Umbraco.Compat7/Web/Media/ThumbnailProvidersResolver.cs create mode 100644 src/Umbraco.Compat7/Web/Mvc/DefaultRenderMvcControllerResolver.cs create mode 100644 src/Umbraco.Compat7/Web/Mvc/FilteredControllerFactoriesResolver.cs create mode 100644 src/Umbraco.Compat7/Web/Routing/ContentFinderResolver.cs create mode 100644 src/Umbraco.Compat7/Web/Routing/ContentLastChangeFinderResolver.cs create mode 100644 src/Umbraco.Compat7/Web/Routing/SiteDomainHelperResolver.cs create mode 100644 src/Umbraco.Compat7/Web/Routing/UrlProviderResolver.cs diff --git a/src/Umbraco.Compat7/Compat7Component.cs b/src/Umbraco.Compat7/Compat7Component.cs index 013070a439..457b8ec6f1 100644 --- a/src/Umbraco.Compat7/Compat7Component.cs +++ b/src/Umbraco.Compat7/Compat7Component.cs @@ -9,11 +9,12 @@ using Umbraco.Core.Plugins; namespace Umbraco.Compat7 { - internal class Compat7Component : UmbracoComponentBase, IUmbracoUserComponent + public class Compat7Component : UmbracoComponentBase, IUmbracoUserComponent { private List _handlers; private UmbracoApplicationBase _app; + // these events replace the UmbracoApplicationBase corresponding events public static event EventHandler ApplicationStarting; public static event EventHandler ApplicationStarted; @@ -26,8 +27,6 @@ namespace Umbraco.Compat7 var handlerTypes = pluginManager.ResolveTypes(); _handlers = handlerTypes.Select(Activator.CreateInstance).Cast().ToList(); - // fixme - UmbracoApplication events - foreach (var handler in _handlers) handler.OnApplicationInitialized(_app, ApplicationContext.Current); @@ -47,8 +46,6 @@ namespace Umbraco.Compat7 public void Initialize(ILogger logger) { - // fixme - UmbracoApplication events - foreach (var handler in _handlers) handler.OnApplicationStarted(_app, ApplicationContext.Current); diff --git a/src/Umbraco.Compat7/Core/ActionsResolver.cs b/src/Umbraco.Compat7/Core/ActionsResolver.cs new file mode 100644 index 0000000000..f8f78bc180 --- /dev/null +++ b/src/Umbraco.Compat7/Core/ActionsResolver.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; +using Umbraco.Web._Legacy.Actions; +using WebCurrent = Umbraco.Web.Current; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core +{ + public class ActionsResolver + { + private ActionsResolver() + { } + + public static ActionsResolver Current { get; } = new ActionsResolver(); + + public IEnumerable Actions => WebCurrent.Actions; + } +} diff --git a/src/Umbraco.Compat7/Core/Cache/CacheRefreshersResolver.cs b/src/Umbraco.Compat7/Core/Cache/CacheRefreshersResolver.cs new file mode 100644 index 0000000000..110dd848e6 --- /dev/null +++ b/src/Umbraco.Compat7/Core/Cache/CacheRefreshersResolver.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using Umbraco.Core.ObjectResolution; +using CoreCurrent = Umbraco.Core.DependencyInjection.Current; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core.Cache +{ + public class CacheRefreshersResolver : LazyManyObjectsResolverBase + { + private CacheRefreshersResolver(CacheRefresherCollectionBuilder builder) + : base(builder) + { } + + public static CacheRefreshersResolver Current { get; } + = new CacheRefreshersResolver(CoreCurrent.Container.GetInstance()); + + public IEnumerable CacheRefreshers => CoreCurrent.CacheRefreshers; + + public ICacheRefresher GetById(Guid id) => CoreCurrent.CacheRefreshers[id]; + } +} diff --git a/src/Umbraco.Compat7/Core/Dictionary/CultureDictionaryFactoryResolver.cs b/src/Umbraco.Compat7/Core/Dictionary/CultureDictionaryFactoryResolver.cs new file mode 100644 index 0000000000..39c91af4fe --- /dev/null +++ b/src/Umbraco.Compat7/Core/Dictionary/CultureDictionaryFactoryResolver.cs @@ -0,0 +1,24 @@ +using Umbraco.Core.DependencyInjection; +using CoreCurrent = Umbraco.Core.DependencyInjection.Current; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core.Dictionary +{ + public class CultureDictionaryFactoryResolver + { + private CultureDictionaryFactoryResolver() + { } + + public static bool HasCurrent => true; + + public static CultureDictionaryFactoryResolver Current { get; } + = new CultureDictionaryFactoryResolver(); + + public ICultureDictionaryFactory Factory => CoreCurrent.CultureDictionaryFactory; + + public void SetDictionaryFactory(ICultureDictionaryFactory factory) + { + CoreCurrent.Container.RegisterSingleton(_ => factory); + } + } +} diff --git a/src/Umbraco.Compat7/Core/Logging/LoggerResolver.cs b/src/Umbraco.Compat7/Core/Logging/LoggerResolver.cs new file mode 100644 index 0000000000..c27f53daa6 --- /dev/null +++ b/src/Umbraco.Compat7/Core/Logging/LoggerResolver.cs @@ -0,0 +1,25 @@ +using System; +using CoreCurrent = Umbraco.Core.DependencyInjection.Current; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core.Logging +{ + public class LoggerResolver + { + private LoggerResolver() + { } + + public static bool HasCurrent => true; + + public static LoggerResolver Current { get; } + = new LoggerResolver(); + + public ILogger Logger => CoreCurrent.Logger; + + public void SetLogger(ILogger logger) + { + throw new NotSupportedException("The logger is determined by the UmbracoApplicationBase and cannot be modified afterwards." + + " To use a different logger, override the UmbracoApplicationBase (global.asax) class."); + } + } +} diff --git a/src/Umbraco.Compat7/Core/Logging/ProfilerResolver.cs b/src/Umbraco.Compat7/Core/Logging/ProfilerResolver.cs new file mode 100644 index 0000000000..bbe4d510be --- /dev/null +++ b/src/Umbraco.Compat7/Core/Logging/ProfilerResolver.cs @@ -0,0 +1,25 @@ +using System; +using CoreCurrent = Umbraco.Core.DependencyInjection.Current; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core.Logging +{ + public class ProfilerResolver + { + private ProfilerResolver() + { } + + public static bool HasCurrent => true; + + public static ProfilerResolver Current { get; } + = new ProfilerResolver(); + + public IProfiler Profiler => CoreCurrent.Profiler; + + public void SetProfiler(IProfiler profiler) + { + throw new NotSupportedException("The profiler is configured during the IRuntime Compose() method. Implement a" + + " custom IRuntime if you need to specify your own custom profiler."); + } + } +} diff --git a/src/Umbraco.Compat7/Core/Models/PublishedContent/PublishedContentModelFactoryResolver.cs b/src/Umbraco.Compat7/Core/Models/PublishedContent/PublishedContentModelFactoryResolver.cs index 7f785f20fc..03e034b8f1 100644 --- a/src/Umbraco.Compat7/Core/Models/PublishedContent/PublishedContentModelFactoryResolver.cs +++ b/src/Umbraco.Compat7/Core/Models/PublishedContent/PublishedContentModelFactoryResolver.cs @@ -6,7 +6,12 @@ namespace Umbraco.Core.Models.PublishedContent { public class PublishedContentModelFactoryResolver { - public static PublishedContentModelFactoryResolver Current { get; set; } = new PublishedContentModelFactoryResolver(); + private PublishedContentModelFactoryResolver() + { } + + public static PublishedContentModelFactoryResolver Current { get; } = new PublishedContentModelFactoryResolver(); + + public static bool HasCurrent => true; public void SetFactory(IPublishedContentModelFactory factory) { diff --git a/src/Umbraco.Compat7/Core/ObjectResolution/LazyManyObjectsResolverBase.cs b/src/Umbraco.Compat7/Core/ObjectResolution/LazyManyObjectsResolverBase.cs new file mode 100644 index 0000000000..2658aaf106 --- /dev/null +++ b/src/Umbraco.Compat7/Core/ObjectResolution/LazyManyObjectsResolverBase.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using Umbraco.Core.DependencyInjection; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core.ObjectResolution +{ + public abstract class LazyManyObjectsResolverBase + where TBuilder : LazyCollectionBuilderBase + where TCollection : IBuilderCollection + { + protected LazyManyObjectsResolverBase(TBuilder builder) + { + Builder = builder; + } + + protected TBuilder Builder { get; } + + public static bool HasCurrent => true; + + /// + /// Removes types from the list of types, once it has been lazily evaluated, and before actual objects are instanciated. + /// + /// The type to remove. + public void RemoveType(Type value) + { + Builder.Exclude(value); + } + + /// + /// Lazily adds types from a function producing types. + /// + /// The functions producing types, to add. + public void AddTypeListDelegate(Func> typeListProducer) + { + Builder.Add(typeListProducer); + } + + /// + /// Lazily adds a type from an actual type. + /// + /// The actual type, to add. + /// The type is converted to a lazy type. + public void AddType(Type value) + { + Builder.Add(value); + } + + /// + /// Clears all lazy types + /// + public void Clear() + { + Builder.Clear(); + } + } +} diff --git a/src/Umbraco.Compat7/Core/ObjectResolution/ManyObjectsResolverBase.cs b/src/Umbraco.Compat7/Core/ObjectResolution/ManyObjectsResolverBase.cs new file mode 100644 index 0000000000..a09fe0e0e8 --- /dev/null +++ b/src/Umbraco.Compat7/Core/ObjectResolution/ManyObjectsResolverBase.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using Umbraco.Core.DependencyInjection; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core.ObjectResolution +{ + public abstract class ManyObjectsResolverBase + where TBuilder : OrderedCollectionBuilderBase + where TCollection : IBuilderCollection + { + private readonly TBuilder _builder; + + protected ManyObjectsResolverBase(TBuilder builder) + { + _builder = builder; + } + + public static bool HasCurrent => true; + + public void RemoveType(Type value) + { + _builder.Remove(value); + } + + public void RemoveType() + where T : TItem + { + _builder.Remove(); + } + + protected void AddTypes(IEnumerable types) + { + _builder.Append(types); + } + + public void AddType(Type value) + { + _builder.Append(value); + } + + public void AddType() + where T : TItem + { + _builder.Append(); + } + + public void Clear() + { + _builder.Clear(); + } + + public void InsertType(int index, Type value) + { + _builder.Insert(index, value); + } + + public void InsertType(Type value) + { + _builder.Insert(value); + } + + public void InsertType(int index) + where T : TItem + { + _builder.Insert(index); + } + + public void InsertType() + where T : TItem + { + _builder.Insert(); + } + + public void InsertTypeBefore(Type existingType, Type value) + { + _builder.InsertBefore(existingType, value); + } + + public void InsertTypeBefore() + where TExisting : TItem + where T : TItem + { + _builder.InsertBefore(); + } + + public bool ContainsType(Type value) + { + return _builder.Has(value); + } + + public IEnumerable GetTypes() + { + return _builder.GetTypes(); + } + + public bool ContainsType() + where T : TItem + { + return _builder.Has(); + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Compat7/Core/ObjectResolution/WeightedObjectsResolverBase.cs b/src/Umbraco.Compat7/Core/ObjectResolution/WeightedObjectsResolverBase.cs new file mode 100644 index 0000000000..8471c4d66d --- /dev/null +++ b/src/Umbraco.Compat7/Core/ObjectResolution/WeightedObjectsResolverBase.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using Umbraco.Core.DependencyInjection; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core.ObjectResolution +{ + public class WeightedObjectsResolverBase + where TBuilder : WeightedCollectionBuilderBase + where TCollection : IBuilderCollection + { + private readonly TBuilder _builder; + + protected WeightedObjectsResolverBase(TBuilder builder) + { + _builder = builder; + } + + public static bool HasCurrent => true; + + public void RemoveType(Type value) + { + _builder.Remove(value); + } + + public void RemoveType() + where T : TItem + { + _builder.Remove(); + } + + protected void AddTypes(IEnumerable types) + { + _builder.Add(types); + } + + public void AddType(Type value) + { + _builder.Add(value); + } + + public void AddType() + where T : TItem + { + _builder.Add(); + } + + public void Clear() + { + _builder.Clear(); + } + + public void InsertType(int index, Type value) + { + _builder.Add(value); + } + + public void InsertType(Type value) + { + _builder.Add(value); + } + + public void InsertType(int index) + where T : TItem + { + _builder.Add(); + } + + public void InsertType() + where T : TItem + { + _builder.Add(); + } + + public void InsertTypeBefore(Type existingType, Type value) + { + _builder.Add(value); + } + + public void InsertTypeBefore() + where TExisting : TItem + where T : TItem + { + _builder.Add(); + } + + public bool ContainsType(Type value) + { + return _builder.Has(value); + } + + public IEnumerable GetTypes() + { + return _builder.GetTypes(); + } + + public bool ContainsType() + where T : TItem + { + return _builder.Has(); + } + } +} diff --git a/src/Umbraco.Compat7/Core/Persistence/Migrations/MigrationResolver.cs b/src/Umbraco.Compat7/Core/Persistence/Migrations/MigrationResolver.cs new file mode 100644 index 0000000000..93c29d24f4 --- /dev/null +++ b/src/Umbraco.Compat7/Core/Persistence/Migrations/MigrationResolver.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using Umbraco.Core.ObjectResolution; +using CoreCurrent = Umbraco.Core.DependencyInjection.Current; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core.Persistence.Migrations +{ + public class MigrationResolver : LazyManyObjectsResolverBase + { + private MigrationResolver(MigrationCollectionBuilder builder) + : base(builder) + { } + + public static MigrationResolver Current { get; } + = new MigrationResolver(CoreCurrent.Container.GetInstance()); + + public IEnumerable GetMigrations(IMigrationContext context) => Builder.CreateCollection(context); + } +} diff --git a/src/Umbraco.Compat7/Core/PropertyEditors/PropertyEditorResolver.cs b/src/Umbraco.Compat7/Core/PropertyEditors/PropertyEditorResolver.cs new file mode 100644 index 0000000000..a842a4c6dc --- /dev/null +++ b/src/Umbraco.Compat7/Core/PropertyEditors/PropertyEditorResolver.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using Umbraco.Core.ObjectResolution; +using CoreCurrent = Umbraco.Core.DependencyInjection.Current; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core.PropertyEditors +{ + public class PropertyEditorResolver : LazyManyObjectsResolverBase + { + private PropertyEditorResolver(PropertyEditorCollectionBuilder builder) + : base(builder) + { } + + public static PropertyEditorResolver Current { get; } + = new PropertyEditorResolver(CoreCurrent.Container.GetInstance()); + + public IEnumerable PropertyEditors => CoreCurrent.PropertyEditors; + + public PropertyEditor GetByAlias(string alias) => CoreCurrent.PropertyEditors[alias]; + } +} diff --git a/src/Umbraco.Compat7/Core/PropertyEditors/PropertyValueConvertersResolver.cs b/src/Umbraco.Compat7/Core/PropertyEditors/PropertyValueConvertersResolver.cs index 98e1db93af..333aa78ac3 100644 --- a/src/Umbraco.Compat7/Core/PropertyEditors/PropertyValueConvertersResolver.cs +++ b/src/Umbraco.Compat7/Core/PropertyEditors/PropertyValueConvertersResolver.cs @@ -1,15 +1,19 @@ using System.Collections.Generic; +using Umbraco.Core.ObjectResolution; using CoreCurrent = Umbraco.Core.DependencyInjection.Current; // ReSharper disable once CheckNamespace namespace Umbraco.Core.PropertyEditors { - public class PropertyValueConvertersResolver + public class PropertyValueConvertersResolver : ManyObjectsResolverBase { - public static PropertyValueConvertersResolver Current { get; set; } = new PropertyValueConvertersResolver(); + private PropertyValueConvertersResolver(PropertyValueConverterCollectionBuilder builder) + : base(builder) + { } + + public static PropertyValueConvertersResolver Current { get; } + = new PropertyValueConvertersResolver(CoreCurrent.Container.GetInstance()); public IEnumerable Converters => CoreCurrent.PropertyValueConverters; - - // fixme - should implement the basic resolver add/edit/etc methods! } } diff --git a/src/Umbraco.Compat7/Core/Strings/ShortStringHelperResolver.cs b/src/Umbraco.Compat7/Core/Strings/ShortStringHelperResolver.cs new file mode 100644 index 0000000000..7e0444ab6c --- /dev/null +++ b/src/Umbraco.Compat7/Core/Strings/ShortStringHelperResolver.cs @@ -0,0 +1,24 @@ +using Umbraco.Core.DependencyInjection; +using CoreCurrent = Umbraco.Core.DependencyInjection.Current; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core.Strings +{ + public class ShortStringHelperResolver + { + private ShortStringHelperResolver() + { } + + public static bool HasCurrent => true; + + public static ShortStringHelperResolver Current { get; } + = new ShortStringHelperResolver(); + + public IShortStringHelper Helper => CoreCurrent.ShortStringHelper; + + public void SetHelper(IShortStringHelper helper) + { + CoreCurrent.Container.RegisterSingleton(_ => helper); + } + } +} diff --git a/src/Umbraco.Compat7/Core/Strings/UrlSegmentProviderResolver.cs b/src/Umbraco.Compat7/Core/Strings/UrlSegmentProviderResolver.cs new file mode 100644 index 0000000000..b44897463a --- /dev/null +++ b/src/Umbraco.Compat7/Core/Strings/UrlSegmentProviderResolver.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using Umbraco.Core.ObjectResolution; +using CoreCurrent = Umbraco.Core.DependencyInjection.Current; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core.Strings +{ + public class UrlSegmentProviderResolver : ManyObjectsResolverBase + { + private UrlSegmentProviderResolver(UrlSegmentProviderCollectionBuilder builder) + : base(builder) + { } + + public static UrlSegmentProviderResolver Current { get; } + = new UrlSegmentProviderResolver(CoreCurrent.Container.GetInstance()); + + public IEnumerable Providers => CoreCurrent.UrlSegmentProviders; + } +} \ No newline at end of file diff --git a/src/Umbraco.Compat7/Core/Sync/ServerMessengerResolver.cs b/src/Umbraco.Compat7/Core/Sync/ServerMessengerResolver.cs new file mode 100644 index 0000000000..2bbb1b6a7a --- /dev/null +++ b/src/Umbraco.Compat7/Core/Sync/ServerMessengerResolver.cs @@ -0,0 +1,24 @@ +using Umbraco.Core.DependencyInjection; +using CoreCurrent = Umbraco.Core.DependencyInjection.Current; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core.Sync +{ + public class ServerMessengerResolver + { + private ServerMessengerResolver() + { } + + public static bool HasCurrent => true; + + public static ServerMessengerResolver Current { get; } + = new ServerMessengerResolver(); + + public IServerMessenger Messenger => CoreCurrent.ServerMessenger; + + public void SetServerMessenger(IServerMessenger messenger) + { + CoreCurrent.Container.RegisterSingleton(_ => messenger); + } + } +} diff --git a/src/Umbraco.Compat7/Core/Sync/ServerRegistrarResolver.cs b/src/Umbraco.Compat7/Core/Sync/ServerRegistrarResolver.cs new file mode 100644 index 0000000000..0abc4a121f --- /dev/null +++ b/src/Umbraco.Compat7/Core/Sync/ServerRegistrarResolver.cs @@ -0,0 +1,24 @@ +using Umbraco.Core.DependencyInjection; +using CoreCurrent = Umbraco.Core.DependencyInjection.Current; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core.Sync +{ + public class ServerRegistrarResolver + { + private ServerRegistrarResolver() + { } + + public static bool HasCurrent => true; + + public static ServerRegistrarResolver Current { get; } + = new ServerRegistrarResolver(); + + public IServerRegistrar Registrar => CoreCurrent.ServerRegistrar; + + public void SetServerRegistrar(IServerRegistrar registrar) + { + CoreCurrent.Container.RegisterSingleton(_ => registrar); + } + } +} diff --git a/src/Umbraco.Compat7/Umbraco.Compat7.csproj b/src/Umbraco.Compat7/Umbraco.Compat7.csproj index 804d56d80d..6098b6c0ed 100644 --- a/src/Umbraco.Compat7/Umbraco.Compat7.csproj +++ b/src/Umbraco.Compat7/Umbraco.Compat7.csproj @@ -48,19 +48,41 @@ Properties\SolutionInfo.cs + + + + + + + + + + + + + + + + + + + + + + @@ -79,6 +101,9 @@ + + +