diff --git a/src/Orchard/Environment/Extensions/ExtensionLoaderCoordinator.cs b/src/Orchard/Environment/Extensions/ExtensionLoaderCoordinator.cs index 698050814..5a3a8d0c6 100644 --- a/src/Orchard/Environment/Extensions/ExtensionLoaderCoordinator.cs +++ b/src/Orchard/Environment/Extensions/ExtensionLoaderCoordinator.cs @@ -6,30 +6,25 @@ using Orchard.Caching; using Orchard.Environment.Extensions.Loaders; using Orchard.Environment.Extensions.Models; using Orchard.FileSystems.Dependencies; -using Orchard.FileSystems.VirtualPath; using Orchard.Localization; using Orchard.Logging; -using Orchard.Services; namespace Orchard.Environment.Extensions { public class ExtensionLoaderCoordinator : IExtensionLoaderCoordinator { private readonly IDependenciesFolder _dependenciesFolder; private readonly IExtensionManager _extensionManager; private readonly IEnumerable _loaders; - private readonly IVirtualPathProvider _virtualPathProvider; - private readonly IClock _clock; + private readonly IHostEnvironment _hostEnvironment; public ExtensionLoaderCoordinator( IDependenciesFolder dependenciesFolder, IExtensionManager extensionManager, IEnumerable loaders, - IVirtualPathProvider virtualPathProvider, - IClock clock) { + IHostEnvironment hostEnvironment) { _dependenciesFolder = dependenciesFolder; _extensionManager = extensionManager; _loaders = loaders.OrderBy(l => l.Order); - _virtualPathProvider = virtualPathProvider; - _clock = clock; + _hostEnvironment = hostEnvironment; T = NullLocalizer.Instance; Logger = NullLogger.Instance; } @@ -143,15 +138,14 @@ namespace Orchard.Environment.Extensions { File.Move(entry.Key, entry.Value); } - if (ctx.RestartAppDomain || ctx.ResetSiteCompilation) { - if (ctx.RestartAppDomain) - Logger.Information("AppDomain restart required."); + if (ctx.RestartAppDomain) { + Logger.Information("AppDomain restart required."); + _hostEnvironment.RestartAppDomain(); + } - if (ctx.ResetSiteCompilation) + if (ctx.ResetSiteCompilation) { Logger.Information("Reset site compilation state required."); - - // Touch web.config - File.SetLastWriteTimeUtc(_virtualPathProvider.MapPath("~/web.config"), _clock.UtcNow); + _hostEnvironment.ResetSiteCompilation(); } } diff --git a/src/Orchard/Environment/IHostEnvironment.cs b/src/Orchard/Environment/IHostEnvironment.cs index 694bc5cc0..ebb76478b 100644 --- a/src/Orchard/Environment/IHostEnvironment.cs +++ b/src/Orchard/Environment/IHostEnvironment.cs @@ -1,16 +1,27 @@ using System; +using System.IO; using System.Web.Hosting; +using Orchard.Services; namespace Orchard.Environment { /// /// Abstraction of the running environment /// - public interface IHostEnvironment : IDependency { + public interface IHostEnvironment { bool IsFullTrust { get; } string MapPath(string virtualPath); + + void RestartAppDomain(); + void ResetSiteCompilation(); } public class DefaultHostEnvironment : IHostEnvironment { + private readonly IClock _clock; + + public DefaultHostEnvironment(IClock clock) { + _clock = clock; + } + public bool IsFullTrust { get { return AppDomain.CurrentDomain.IsFullyTrusted; } } @@ -18,5 +29,14 @@ namespace Orchard.Environment { public string MapPath(string virtualPath) { return HostingEnvironment.MapPath(virtualPath); } + + public void RestartAppDomain() { + ResetSiteCompilation(); + } + + public void ResetSiteCompilation() { + // Touch web.config + File.SetLastWriteTimeUtc(MapPath("~/web.config"), _clock.UtcNow); + } } }