From 5878611817c5a720b045b98b910b54274cae8a76 Mon Sep 17 00:00:00 2001 From: "harmony7@pex2.jp" Date: Thu, 3 Sep 2015 22:19:21 +0900 Subject: [PATCH] Wrap IOrchardShellEvents in a work context. --- .../Environment/DefaultOrchardShell.cs | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/Orchard/Environment/DefaultOrchardShell.cs b/src/Orchard/Environment/DefaultOrchardShell.cs index 91379dce8..a679dec17 100644 --- a/src/Orchard/Environment/DefaultOrchardShell.cs +++ b/src/Orchard/Environment/DefaultOrchardShell.cs @@ -17,7 +17,7 @@ using IModelBinderProvider = Orchard.Mvc.ModelBinders.IModelBinderProvider; namespace Orchard.Environment { public class DefaultOrchardShell : IOrchardShell { - private readonly Func> _eventsFactory; + private readonly IWorkContextAccessor _workContextAccessor; private readonly IEnumerable _routeProviders; private readonly IEnumerable _httpRouteProviders; private readonly IRoutePublisher _routePublisher; @@ -28,7 +28,7 @@ namespace Orchard.Environment { private readonly ShellSettings _shellSettings; public DefaultOrchardShell( - Func> eventsFactory, + IWorkContextAccessor workContextAccessor, IEnumerable routeProviders, IEnumerable httpRouteProviders, IRoutePublisher routePublisher, @@ -37,7 +37,7 @@ namespace Orchard.Environment { ISweepGenerator sweepGenerator, IEnumerable owinMiddlewareProviders, ShellSettings shellSettings) { - _eventsFactory = eventsFactory; + _workContextAccessor = workContextAccessor; _routeProviders = routeProviders; _httpRouteProviders = httpRouteProviders; _routePublisher = routePublisher; @@ -76,8 +76,10 @@ namespace Orchard.Environment { _routePublisher.Publish(allRoutes, pipeline); _modelBinderPublisher.Publish(_modelBinderProviders.SelectMany(provider => provider.GetModelBinders())); - using (var events = _eventsFactory()) { - events.Value.Activated(); + using (var scope = _workContextAccessor.CreateWorkContextScope()) { + using (var events = scope.Resolve>()) { + events.Value.Activated(); + } } _sweepGenerator.Activate(); @@ -85,10 +87,12 @@ namespace Orchard.Environment { public void Terminate() { SafelyTerminate(() => { - using (var events = _eventsFactory()) { - SafelyTerminate(() => events.Value.Terminating()); - } - }); + using (var scope = _workContextAccessor.CreateWorkContextScope()) { + using (var events = scope.Resolve>()) { + SafelyTerminate(() => events.Value.Terminating()); + } + } + }); SafelyTerminate(() => _sweepGenerator.Terminate()); }