Decoupling more things, mostly to do with the PluginManager and logging which now requires an IServiceProvider so have created a simple instance of that.

This commit is contained in:
Shannon
2015-01-16 15:47:44 +11:00
parent 8f100a7e9f
commit 1cb0cd296c
77 changed files with 1105 additions and 819 deletions

View File

@@ -28,7 +28,7 @@ namespace Umbraco.Web.Editors
{
public IEnumerable<Stylesheet> GetAll()
{
return Services.FileService.GetStylesheetsAtPath()
return Services.FileService.GetStylesheets()
.Select(x =>
new Stylesheet() {
Name = x.Alias,

View File

@@ -257,7 +257,7 @@ namespace Umbraco.Web.Install.Controllers
internal InstallSetupResult ExecuteStep(InstallSetupStep step, JToken instruction)
{
using (DisposableTimer.TraceDuration<InstallApiController>("Executing installation step: " + step.Name, "Step completed"))
using (ApplicationContext.ProfilingLogger.TraceDuration<InstallApiController>("Executing installation step: " + step.Name, "Step completed"))
{
var model = instruction == null ? null : instruction.ToObject(step.StepType);
var genericStepType = typeof(InstallSetupStep<>);

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Logging;
using Umbraco.Core.Media;
using Umbraco.Core.ObjectResolution;
using Umbraco.Web.Media.ImageUrlProviders;
@@ -9,12 +10,15 @@ namespace Umbraco.Web.Media
{
internal sealed class ImageUrlProviderResolver : ManyObjectsResolverBase<ImageUrlProviderResolver, IImageUrlProvider>
{
internal ImageUrlProviderResolver(IEnumerable<Type> value) : base(value) { }
internal ImageUrlProviderResolver(IServiceProvider serviceProvider, ILogger logger, IEnumerable<Type> value)
: base(serviceProvider, logger, value)
{
}
public IImageUrlProvider GetProvider(string provider)
{
return string.IsNullOrEmpty(provider) ?
Values.First(v => v.Name.Equals(ImageUrlProvider.DefaultName, StringComparison.InvariantCultureIgnoreCase)) :
return string.IsNullOrEmpty(provider) ?
Values.First(v => v.Name.Equals(ImageUrlProvider.DefaultName, StringComparison.InvariantCultureIgnoreCase)) :
Values.First(v => v.Name.Equals(provider, StringComparison.InvariantCultureIgnoreCase));
}
}

View File

@@ -4,6 +4,7 @@ using System.Linq;
using System.Text;
using System.Web;
using Umbraco.Core;
using Umbraco.Core.Logging;
using Umbraco.Core.Media;
using Umbraco.Core.ObjectResolution;
using umbraco.BusinessLogic;
@@ -13,14 +14,14 @@ namespace Umbraco.Web.Media.ThumbnailProviders
{
internal sealed class ThumbnailProvidersResolver : ManyObjectsResolverBase<ThumbnailProvidersResolver, IThumbnailProvider>
{
/// <summary>
/// Constructor
/// </summary>
/// <param name="providers"></param>
internal ThumbnailProvidersResolver(IEnumerable<Type> providers)
: base(providers)
/// <summary>
/// Constructor
/// </summary>
/// <param name="serviceProvider"></param>
/// <param name="logger"></param>
/// <param name="providers"></param>
internal ThumbnailProvidersResolver(IServiceProvider serviceProvider, ILogger logger, IEnumerable<Type> providers)
: base(serviceProvider, logger, providers)
{
}

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Umbraco.Core.Logging;
using Umbraco.Core.ObjectResolution;
namespace Umbraco.Web.Mvc
@@ -9,12 +10,14 @@ namespace Umbraco.Web.Mvc
/// </summary>
public sealed class FilteredControllerFactoriesResolver : ManyObjectsResolverBase<FilteredControllerFactoriesResolver, IFilteredControllerFactory>
{
/// <summary>
/// Constructor
/// </summary>
/// <param name="factories"></param>
internal FilteredControllerFactoriesResolver(IEnumerable<Type> factories)
: base(factories)
/// <summary>
/// Constructor
/// </summary>
/// <param name="logger"></param>
/// <param name="factories"></param>
/// <param name="serviceProvider"></param>
internal FilteredControllerFactoriesResolver(IServiceProvider serviceProvider, ILogger logger, IEnumerable<Type> factories)
: base(serviceProvider, logger, factories)
{
}

View File

@@ -8,101 +8,104 @@ using Umbraco.Web.WebApi;
namespace Umbraco.Web.Mvc
{
/// <summary>
/// A base class for all plugin controllers to inherit from
/// </summary>
public abstract class PluginController : Controller
{
/// <summary>
/// stores the metadata about plugin controllers
/// </summary>
private static readonly ConcurrentDictionary<Type, PluginControllerMetadata> MetadataStorage = new ConcurrentDictionary<Type, PluginControllerMetadata>();
/// <summary>
/// A base class for all plugin controllers to inherit from
/// </summary>
public abstract class PluginController : Controller
{
/// <summary>
/// stores the metadata about plugin controllers
/// </summary>
private static readonly ConcurrentDictionary<Type, PluginControllerMetadata> MetadataStorage = new ConcurrentDictionary<Type, PluginControllerMetadata>();
protected PluginController(ILogger logger, UmbracoContext umbracoContext)
/// <summary>
/// Default constructor
/// </summary>
/// <param name="umbracoContext"></param>
protected PluginController(UmbracoContext umbracoContext)
{
if (logger == null) throw new ArgumentNullException("logger");
if (umbracoContext == null) throw new ArgumentNullException("umbracoContext");
Logger = logger;
UmbracoContext = umbracoContext;
InstanceId = Guid.NewGuid();
Umbraco = new UmbracoHelper(umbracoContext);
}
/// <summary>
/// Default constructor
/// </summary>
/// <param name="umbracoContext"></param>
protected PluginController(UmbracoContext umbracoContext)
: this(LoggerResolver.Current.Logger, umbracoContext)
{
}
/// <summary>
/// Useful for debugging
/// </summary>
internal Guid InstanceId { get; private set; }
/// <summary>
/// Useful for debugging
/// </summary>
internal Guid InstanceId { get; private set; }
/// <summary>
/// Returns an UmbracoHelper object
/// </summary>
public UmbracoHelper Umbraco { get; private set; }
/// <summary>
/// Returns an UmbracoHelper object
/// </summary>
public UmbracoHelper Umbraco { get; private set; }
/// <summary>
/// Returns an ILogger
/// </summary>
public ILogger Logger { get; private set; }
public ILogger Logger
{
get { return ProfilingLogger.Logger; }
}
/// <summary>
/// Returns the current UmbracoContext
/// </summary>
public UmbracoContext UmbracoContext { get; private set; }
/// <summary>
/// Returns a ProfilingLogger
/// </summary>
public ProfilingLogger ProfilingLogger
{
get { return UmbracoContext.Application.ProfilingLogger; }
}
/// <summary>
/// Returns the current ApplicationContext
/// </summary>
public ApplicationContext ApplicationContext
{
get { return UmbracoContext.Application; }
}
/// <summary>
/// Returns the current UmbracoContext
/// </summary>
public UmbracoContext UmbracoContext { get; private set; }
/// <summary>
/// Returns a ServiceContext
/// </summary>
public ServiceContext Services
{
get { return ApplicationContext.Services; }
}
/// <summary>
/// Returns the current ApplicationContext
/// </summary>
public ApplicationContext ApplicationContext
{
get { return UmbracoContext.Application; }
}
/// <summary>
/// Returns a DatabaseContext
/// </summary>
public DatabaseContext DatabaseContext
{
get { return ApplicationContext.DatabaseContext; }
}
/// <summary>
/// Returns a ServiceContext
/// </summary>
public ServiceContext Services
{
get { return ApplicationContext.Services; }
}
/// <summary>
/// Returns the metadata for this instance
/// </summary>
internal PluginControllerMetadata Metadata
{
get { return GetMetadata(this.GetType()); }
}
/// <summary>
/// Returns a DatabaseContext
/// </summary>
public DatabaseContext DatabaseContext
{
get { return ApplicationContext.DatabaseContext; }
}
/// <summary>
/// Returns the metadata for a PluginController
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
internal static PluginControllerMetadata GetMetadata(Type type)
{
return MetadataStorage.GetOrAdd(type, type1 =>
{
/// <summary>
/// Returns the metadata for this instance
/// </summary>
internal PluginControllerMetadata Metadata
{
get { return GetMetadata(this.GetType()); }
}
/// <summary>
/// Returns the metadata for a PluginController
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
internal static PluginControllerMetadata GetMetadata(Type type)
{
return MetadataStorage.GetOrAdd(type, type1 =>
{
var pluginAttribute = type.GetCustomAttribute<PluginControllerAttribute>(false);
//check if any inherited class of this type contains the IsBackOffice attribute
var backOfficeAttribute = type.GetCustomAttribute<IsBackOfficeAttribute>(true);
var backOfficeAttribute = type.GetCustomAttribute<IsBackOfficeAttribute>(true);
var meta = new PluginControllerMetadata()
{
@@ -116,8 +119,8 @@ namespace Umbraco.Web.Mvc
MetadataStorage.TryAdd(type, meta);
return meta;
});
});
}
}
}
}
}

View File

@@ -25,12 +25,6 @@ namespace Umbraco.Web.Mvc
ActionInvoker = new RenderActionInvoker();
}
public RenderMvcController(ILogger logger, UmbracoContext umbracoContext)
: base(logger, umbracoContext)
{
}
public RenderMvcController(UmbracoContext umbracoContext)
: base(umbracoContext)
{

View File

@@ -17,17 +17,6 @@ namespace Umbraco.Web.Mvc
[MergeParentContextViewData]
public abstract class SurfaceController : PluginController
{
/// <summary>
/// Default constructor
/// </summary>
/// <param name="umbracoContext"></param>
/// <param name="logger"></param>
protected SurfaceController(ILogger logger, UmbracoContext umbracoContext)
: base(logger, umbracoContext)
{
_membershipHelper = new MembershipHelper(umbracoContext);
}
/// <summary>
/// Default constructor
/// </summary>
@@ -106,7 +95,7 @@ namespace Umbraco.Web.Mvc
/// <returns></returns>
protected UmbracoPageResult CurrentUmbracoPage()
{
return new UmbracoPageResult();
return new UmbracoPageResult(ApplicationContext.ProfilingLogger);
}
/// <summary>

View File

@@ -8,8 +8,8 @@ namespace Umbraco.Web.Mvc
{
internal sealed class SurfaceControllerResolver : ManyObjectsResolverBase<SurfaceControllerResolver, SurfaceController>
{
public SurfaceControllerResolver(IEnumerable<Type> surfaceControllers)
: base(surfaceControllers)
public SurfaceControllerResolver(IServiceProvider serviceProvider, ILogger logger, IEnumerable<Type> surfaceControllers)
: base(serviceProvider, logger, surfaceControllers)
{
}

View File

@@ -12,17 +12,10 @@ namespace Umbraco.Web.Mvc
/// </summary>
public abstract class UmbracoController : Controller
{
protected UmbracoController(ILogger logger, UmbracoContext umbracoContext)
{
if (logger == null) throw new ArgumentNullException("logger");
if (umbracoContext == null) throw new ArgumentNullException("umbracoContext");
Logger = logger;
UmbracoContext = umbracoContext;
}
protected UmbracoController(UmbracoContext umbracoContext)
: this(LoggerResolver.Current.Logger, umbracoContext)
{
{
if (umbracoContext == null) throw new ArgumentNullException("umbracoContext");
UmbracoContext = umbracoContext;
}
protected UmbracoController()
@@ -44,7 +37,18 @@ namespace Umbraco.Web.Mvc
/// <summary>
/// Returns an ILogger
/// </summary>
public ILogger Logger { get; private set; }
public ILogger Logger
{
get { return ProfilingLogger.Logger; }
}
/// <summary>
/// Returns a ProfilingLogger
/// </summary>
public ProfilingLogger ProfilingLogger
{
get { return UmbracoContext.Application.ProfilingLogger; }
}
/// <summary>
/// Returns the current UmbracoContext

View File

@@ -4,6 +4,8 @@ using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using Umbraco.Core;
using Umbraco.Core.Logging;
using Umbraco.Core.Profiling;
namespace Umbraco.Web.Mvc
{
@@ -12,7 +14,21 @@ namespace Umbraco.Web.Mvc
/// </summary>
public class UmbracoPageResult : ActionResult
{
public override void ExecuteResult(ControllerContext context)
private readonly ProfilingLogger _profilingLogger;
public UmbracoPageResult(ProfilingLogger profilingLogger)
{
_profilingLogger = profilingLogger;
}
[Obsolete("Use the ctor specifying all depenendencies instead")]
public UmbracoPageResult()
: this(new ProfilingLogger(LoggerResolver.Current.Logger, ProfilerResolver.Current.Profiler))
{
}
public override void ExecuteResult(ControllerContext context)
{
ResetRouteData(context.RouteData);
@@ -52,9 +68,9 @@ namespace Umbraco.Web.Mvc
/// <summary>
/// Executes the controller action
/// </summary>
private static void ExecuteControllerAction(ControllerContext context, IController controller)
private void ExecuteControllerAction(ControllerContext context, IController controller)
{
using (DisposableTimer.TraceDuration<UmbracoPageResult>("Executing Umbraco RouteDefinition controller", "Finished"))
using (_profilingLogger.TraceDuration<UmbracoPageResult>("Executing Umbraco RouteDefinition controller", "Finished"))
{
controller.Execute(context.RequestContext);
}
@@ -75,7 +91,7 @@ namespace Umbraco.Web.Mvc
/// </summary>
private static void ValidateRouteData(RouteData routeData)
{
if (!routeData.DataTokens.ContainsKey("umbraco-route-def"))
if (routeData.DataTokens.ContainsKey("umbraco-route-def") == false)
{
throw new InvalidOperationException("Can only use " + typeof(UmbracoPageResult).Name +
" in the context of an Http POST when using a SurfaceController form");

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Umbraco.Core.Logging;
using Umbraco.Core.ObjectResolution;
namespace Umbraco.Web.Routing
@@ -9,22 +10,26 @@ namespace Umbraco.Web.Routing
/// </summary>
public sealed class ContentFinderResolver : ManyObjectsResolverBase<ContentFinderResolver, IContentFinder>
{
/// <summary>
/// Initializes a new instance of the <see cref="ContentFinderResolver"/> class with an initial list of finder types.
/// </summary>
/// <param name="finders">The list of finder types</param>
/// <remarks>The resolver is created by the <c>WebBootManager</c> and thus the constructor remains internal.</remarks>
internal ContentFinderResolver(IEnumerable<Type> finders)
: base(finders)
/// <summary>
/// Initializes a new instance of the <see cref="ContentFinderResolver"/> class with an initial list of finder types.
/// </summary>
/// <param name="serviceProvider"></param>
/// <param name="logger"></param>
/// <param name="finders">The list of finder types</param>
/// <remarks>The resolver is created by the <c>WebBootManager</c> and thus the constructor remains internal.</remarks>
internal ContentFinderResolver(IServiceProvider serviceProvider, ILogger logger, IEnumerable<Type> finders)
: base(serviceProvider, logger, finders)
{ }
/// <summary>
/// Initializes a new instance of the <see cref="ContentFinderResolver"/> class with an initial list of finder types.
/// </summary>
/// <param name="finders">The list of finder types</param>
/// <remarks>The resolver is created by the <c>WebBootManager</c> and thus the constructor remains internal.</remarks>
internal ContentFinderResolver(params Type[] finders)
: base(finders)
/// <summary>
/// Initializes a new instance of the <see cref="ContentFinderResolver"/> class with an initial list of finder types.
/// </summary>
/// <param name="logger"></param>
/// <param name="finders">The list of finder types</param>
/// <param name="serviceProvider"></param>
/// <remarks>The resolver is created by the <c>WebBootManager</c> and thus the constructor remains internal.</remarks>
internal ContentFinderResolver(IServiceProvider serviceProvider, ILogger logger, params Type[] finders)
: base(serviceProvider, logger, finders)
{ }
/// <summary>

View File

@@ -2,8 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Umbraco.Core.ObjectResolution;
using Umbraco.Core.Logging;
using Umbraco.Core.ObjectResolution;
namespace Umbraco.Web.Routing
{
@@ -15,19 +15,23 @@ namespace Umbraco.Web.Routing
/// <summary>
/// Initializes a new instance of the <see cref="UrlProviderResolver"/> class with an initial list of provider types.
/// </summary>
/// <param name="logger"></param>
/// <param name="providerTypes">The list of provider types.</param>
/// <param name="serviceProvider"></param>
/// <remarks>The resolver is created by the <c>WebBootManager</c> and thus the constructor remains internal.</remarks>
internal UrlProviderResolver(IEnumerable<Type> providerTypes)
: base(providerTypes)
internal UrlProviderResolver(IServiceProvider serviceProvider, ILogger logger, IEnumerable<Type> providerTypes)
: base(serviceProvider, logger, providerTypes)
{ }
/// <summary>
/// Initializes a new instance of the <see cref="UrlProviderResolver"/> class with an initial list of provider types.
/// </summary>
/// <param name="logger"></param>
/// <param name="providerTypes">The list of provider types.</param>
/// <param name="serviceProvider"></param>
/// <remarks>The resolver is created by the <c>WebBootManager</c> and thus the constructor remains internal.</remarks>
internal UrlProviderResolver(params Type[] providerTypes)
: base(providerTypes)
internal UrlProviderResolver(IServiceProvider serviceProvider, ILogger logger, params Type[] providerTypes)
: base(serviceProvider, logger, providerTypes)
{ }
/// <summary>

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using Umbraco.Core;
using Umbraco.Core.Logging;
using Umbraco.Core.ObjectResolution;
using Umbraco.Web.PublishedCache;
using Umbraco.Web.Routing;
@@ -61,11 +62,12 @@ namespace Umbraco.Web.Standalone
PublishedCachesResolver.Current = new PublishedCachesResolver(caches);
UrlProviderResolver.Current = new UrlProviderResolver(typeof (DefaultUrlProvider));
UrlProviderResolver.Current = new UrlProviderResolver(ServiceProvider, LoggerResolver.Current.Logger, typeof(DefaultUrlProvider));
SiteDomainHelperResolver.Current = new SiteDomainHelperResolver(new SiteDomainHelper());
ContentLastChanceFinderResolver.Current = new ContentLastChanceFinderResolver();
ContentFinderResolver.Current = new ContentFinderResolver(
ServiceProvider, LoggerResolver.Current.Logger,
typeof (ContentFinderByPageIdQuery),
typeof (ContentFinderByNiceUrl),
typeof (ContentFinderByIdPath),

View File

@@ -17,21 +17,13 @@ namespace Umbraco.Web.UI.Controls
public abstract class UmbracoControl : Control
{
protected UmbracoControl(UmbracoContext umbracoContext)
: this(LoggerResolver.Current.Logger, umbracoContext)
{
}
/// <summary>
/// Default constructor
/// </summary>
/// <param name="logger"></param>
/// <param name="umbracoContext"></param>
protected UmbracoControl(ILogger logger, UmbracoContext umbracoContext)
protected UmbracoControl(UmbracoContext umbracoContext)
{
if (logger == null) throw new ArgumentNullException("logger");
if (umbracoContext == null) throw new ArgumentNullException("umbracoContext");
Logger = logger;
UmbracoContext = umbracoContext;
Umbraco = new UmbracoHelper(umbracoContext);
}
@@ -49,7 +41,22 @@ namespace Umbraco.Web.UI.Controls
/// </summary>
public UmbracoHelper Umbraco { get; private set; }
public ILogger Logger { get; private set; }
/// <summary>
/// Returns an ILogger
/// </summary>
public ILogger Logger
{
get { return ProfilingLogger.Logger; }
}
/// <summary>
/// Returns a ProfilingLogger
/// </summary>
public ProfilingLogger ProfilingLogger
{
get { return UmbracoContext.Application.ProfilingLogger; }
}
public UmbracoContext UmbracoContext { get; private set; }
protected ApplicationContext ApplicationContext

View File

@@ -16,21 +16,13 @@ namespace Umbraco.Web.UI.Controls
/// </summary>
public abstract class UmbracoUserControl : UserControl
{
protected UmbracoUserControl(UmbracoContext umbracoContext)
: this(LoggerResolver.Current.Logger, umbracoContext)
{
}
/// <summary>
/// Default constructor
/// </summary>
/// <param name="logger"></param>
/// <param name="umbracoContext"></param>
protected UmbracoUserControl(ILogger logger, UmbracoContext umbracoContext)
protected UmbracoUserControl(UmbracoContext umbracoContext)
{
if (logger == null) throw new ArgumentNullException("logger");
if (umbracoContext == null) throw new ArgumentNullException("umbracoContext");
Logger = logger;
UmbracoContext = umbracoContext;
InstanceId = Guid.NewGuid();
Umbraco = new UmbracoHelper(umbracoContext);
@@ -73,7 +65,21 @@ namespace Umbraco.Web.UI.Controls
get { return UmbracoContext.Security; }
}
public ILogger Logger { get; private set; }
/// <summary>
/// Returns an ILogger
/// </summary>
public ILogger Logger
{
get { return ProfilingLogger.Logger; }
}
/// <summary>
/// Returns a ProfilingLogger
/// </summary>
public ProfilingLogger ProfilingLogger
{
get { return UmbracoContext.Application.ProfilingLogger; }
}
/// <summary>
/// Returns the current UmbracoContext

View File

@@ -9,6 +9,7 @@ using Umbraco.Core;
using Umbraco.Core.Configuration;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.Profiling;
using Umbraco.Core.Services;
using Umbraco.Web.Security;
using umbraco.BusinessLogic;
@@ -28,8 +29,6 @@ namespace Umbraco.Web.UI.Pages
private ClientTools _clientTools;
//We won't expose this... people should be using the DatabaseContext for custom queries if they need them.
@@ -42,12 +41,25 @@ namespace Umbraco.Web.UI.Pages
// get { return global::umbraco.BusinessLogic.Application.SqlHelper; }
//}
private ILogger _logger;
/// <summary>
/// Returns an ILogger
/// </summary>
public ILogger Logger
{
get { return _logger ?? (_logger = LoggerResolver.Current.Logger); }
get { return ProfilingLogger.Logger; }
}
/// <summary>
/// Returns a ProfilingLogger
/// </summary>
public ProfilingLogger ProfilingLogger
{
get { return _logger ?? (_logger = new ProfilingLogger(LoggerResolver.Current.Logger, ProfilerResolver.Current.Profiler)); }
}
private ProfilingLogger _logger;
private UrlHelper _url;
/// <summary>
/// Returns a UrlHelper

View File

@@ -22,23 +22,15 @@ namespace Umbraco.Web.WebApi
}
protected UmbracoApiController(ILogger logger, UmbracoContext umbracoContext)
protected UmbracoApiController(UmbracoContext umbracoContext)
{
if (logger == null) throw new ArgumentNullException("logger");
if (umbracoContext == null) throw new ArgumentNullException("umbracoContext");
UmbracoContext = umbracoContext;
InstanceId = Guid.NewGuid();
Umbraco = new UmbracoHelper(umbracoContext);
Logger = logger;
_membershipHelper = new MembershipHelper(UmbracoContext);
}
protected UmbracoApiController(UmbracoContext umbracoContext)
: this(LoggerResolver.Current.Logger, umbracoContext)
{
}
private readonly MembershipHelper _membershipHelper;
/// <summary>
@@ -50,7 +42,21 @@ namespace Umbraco.Web.WebApi
return Request.TryGetHttpContext();
}
public ILogger Logger { get; private set; }
/// <summary>
/// Returns an ILogger
/// </summary>
public ILogger Logger
{
get { return ProfilingLogger.Logger; }
}
/// <summary>
/// Returns a ProfilingLogger
/// </summary>
public ProfilingLogger ProfilingLogger
{
get { return UmbracoContext.Application.ProfilingLogger; }
}
/// <summary>
/// Returns the current ApplicationContext

View File

@@ -1,13 +1,14 @@
using System;
using System.Collections.Generic;
using Umbraco.Core.Logging;
using Umbraco.Core.ObjectResolution;
namespace Umbraco.Web.WebApi
{
internal sealed class UmbracoApiControllerResolver : ManyObjectsResolverBase<UmbracoApiControllerResolver, UmbracoApiController>
{
public UmbracoApiControllerResolver(IEnumerable<Type> apiControllers)
: base(apiControllers)
public UmbracoApiControllerResolver(IServiceProvider serviceProvider, ILogger logger, IEnumerable<Type> apiControllers)
: base(serviceProvider, logger, apiControllers)
{
}

View File

@@ -315,7 +315,7 @@ namespace Umbraco.Web
{
base.InitializeResolvers();
XsltExtensionsResolver.Current = new XsltExtensionsResolver(() => PluginManager.Current.ResolveXsltExtensions());
XsltExtensionsResolver.Current = new XsltExtensionsResolver(ServiceProvider, LoggerResolver.Current.Logger, () => PluginManager.Current.ResolveXsltExtensions());
//set the default RenderMvcController
DefaultRenderMvcControllerResolver.Current = new DefaultRenderMvcControllerResolver(typeof(RenderMvcController));
@@ -343,9 +343,11 @@ namespace Umbraco.Web
}));
SurfaceControllerResolver.Current = new SurfaceControllerResolver(
ServiceProvider, LoggerResolver.Current.Logger,
PluginManager.Current.ResolveSurfaceControllers());
UmbracoApiControllerResolver.Current = new UmbracoApiControllerResolver(
ServiceProvider, LoggerResolver.Current.Logger,
PluginManager.Current.ResolveUmbracoApiControllers());
// both TinyMceValueConverter (in Core) and RteMacroRenderingValueConverter (in Web) will be
@@ -366,6 +368,7 @@ namespace Umbraco.Web
new NamespaceHttpControllerSelector(GlobalConfiguration.Configuration));
FilteredControllerFactoriesResolver.Current = new FilteredControllerFactoriesResolver(
ServiceProvider, LoggerResolver.Current.Logger,
// add all known factories, devs can then modify this list on application
// startup either by binding to events or in their own global.asax
new[]
@@ -374,6 +377,7 @@ namespace Umbraco.Web
});
UrlProviderResolver.Current = new UrlProviderResolver(
ServiceProvider, LoggerResolver.Current.Logger,
//typeof(AliasUrlProvider), // not enabled by default
typeof(DefaultUrlProvider),
typeof(CustomRouteUrlProvider)
@@ -388,6 +392,7 @@ namespace Umbraco.Web
new ContentLastChanceFinderByNotFoundHandlers());
ContentFinderResolver.Current = new ContentFinderResolver(
ServiceProvider, LoggerResolver.Current.Logger,
// all built-in finders in the correct order, devs can then modify this list
// on application startup via an application event handler.
typeof(ContentFinderByPageIdQuery),
@@ -411,9 +416,11 @@ namespace Umbraco.Web
PublishedCache.XmlPublishedCache.PublishedContentCache.UnitTesting = _isForTesting;
ThumbnailProvidersResolver.Current = new ThumbnailProvidersResolver(
ServiceProvider, LoggerResolver.Current.Logger,
PluginManager.Current.ResolveThumbnailProviders());
ImageUrlProviderResolver.Current = new ImageUrlProviderResolver(
ServiceProvider, LoggerResolver.Current.Logger,
PluginManager.Current.ResolveImageUrlProviders());
CultureDictionaryFactoryResolver.Current = new CultureDictionaryFactoryResolver(

View File

@@ -21,16 +21,8 @@ namespace Umbraco.Web.WebServices
}
protected UmbracoHttpHandler(UmbracoContext umbracoContext)
: this(LoggerResolver.Current.Logger, umbracoContext)
{
}
protected UmbracoHttpHandler(ILogger logger, UmbracoContext umbracoContext)
{
if (logger == null) throw new ArgumentNullException("logger");
if (umbracoContext == null) throw new ArgumentNullException("umbracoContext");
Logger = logger;
UmbracoContext = umbracoContext;
Umbraco = new UmbracoHelper(umbracoContext);
}
@@ -43,7 +35,21 @@ namespace Umbraco.Web.WebServices
get { return UmbracoContext.Application; }
}
public ILogger Logger { get; private set; }
/// <summary>
/// Returns an ILogger
/// </summary>
public ILogger Logger
{
get { return ProfilingLogger.Logger; }
}
/// <summary>
/// Returns a ProfilingLogger
/// </summary>
public ProfilingLogger ProfilingLogger
{
get { return UmbracoContext.Application.ProfilingLogger; }
}
/// <summary>
/// Returns the current UmbracoContext

View File

@@ -22,15 +22,8 @@ namespace Umbraco.Web.WebServices
}
protected UmbracoWebService(UmbracoContext umbracoContext)
: this(LoggerResolver.Current.Logger, umbracoContext)
{
}
protected UmbracoWebService(ILogger logger, UmbracoContext umbracoContext)
{
if (logger == null) throw new ArgumentNullException("logger");
if (umbracoContext == null) throw new ArgumentNullException("umbracoContext");
Logger = logger;
UmbracoContext = umbracoContext;
Umbraco = new UmbracoHelper(umbracoContext);
}
@@ -43,7 +36,21 @@ namespace Umbraco.Web.WebServices
get { return UmbracoContext.Application; }
}
public ILogger Logger { get; private set; }
/// <summary>
/// Returns an ILogger
/// </summary>
public ILogger Logger
{
get { return ProfilingLogger.Logger; }
}
/// <summary>
/// Returns a ProfilingLogger
/// </summary>
public ProfilingLogger ProfilingLogger
{
get { return UmbracoContext.Application.ProfilingLogger; }
}
/// <summary>
/// Returns the current UmbracoContext

View File

@@ -62,7 +62,7 @@ namespace umbraco
public override void Render(ref XmlTree tree)
{
foreach (var sheet in Services.FileService.GetStylesheetsAtPath())
foreach (var sheet in Services.FileService.GetStylesheets())
{
var xNode = XmlTreeNode.Create(this);
xNode.NodeID = sheet.Alias;