mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Revert "#20314: DefaultShapeTableManager doesn't keep IShapeTableProviders alive too long any more either." This actually causes "Instances cannot be resolved and nested lifetimes cannot be created from this LifetimeScope as it has already been disposed." errors.
This reverts commits411e3f9dddandb21d637ba4.
This commit is contained in:
@@ -40,8 +40,6 @@ using System.Web.Mvc;
|
||||
using Orchard.Tests.Stubs;
|
||||
using Orchard.Themes;
|
||||
using Orchard.UI.PageClass;
|
||||
using Orchard.Environment;
|
||||
using Autofac.Features.Metadata;
|
||||
|
||||
namespace Orchard.Core.Tests.Common.Providers {
|
||||
[TestFixture]
|
||||
@@ -70,8 +68,7 @@ namespace Orchard.Core.Tests.Common.Providers {
|
||||
builder.RegisterInstance(new Mock<IOrchardServices>().Object);
|
||||
|
||||
builder.RegisterInstance(new RequestContext(new StubHttpContext(), new RouteData()));
|
||||
builder.RegisterInstance(new Work<IEnumerable<Meta<IShapeTableProvider>>>(resolve => _container.Resolve<IEnumerable<Meta<IShapeTableProvider>>>())).AsSelf();
|
||||
builder.RegisterInstance(new Work<IEnumerable<IShapeTableEventHandler>>(resolve => _container.Resolve<IEnumerable<IShapeTableEventHandler>>())).AsSelf();
|
||||
builder.RegisterInstance(new Orchard.Environment.Work<IEnumerable<IShapeTableEventHandler>>(resolve => _container.Resolve<IEnumerable<IShapeTableEventHandler>>())).AsSelf();
|
||||
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
|
||||
builder.RegisterType<ShapeTableLocator>().As<IShapeTableLocator>();
|
||||
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
|
||||
|
||||
@@ -41,7 +41,6 @@ using Orchard.Core.Settings.Handlers;
|
||||
using System.Collections.Specialized;
|
||||
using Orchard.Mvc;
|
||||
using Orchard.Tests.Modules.Stubs;
|
||||
using Autofac.Features.Metadata;
|
||||
|
||||
namespace Orchard.Tests.Modules.Users.Controllers {
|
||||
[TestFixture]
|
||||
@@ -74,7 +73,6 @@ namespace Orchard.Tests.Modules.Users.Controllers {
|
||||
builder.RegisterType<OrchardServices>().As<IOrchardServices>();
|
||||
|
||||
builder.RegisterInstance(new DefaultContentManagerTests.TestSessionLocator(_session)).As<ITransactionManager>();
|
||||
builder.RegisterInstance(new Work<IEnumerable<Meta<IShapeTableProvider>>>(resolve => _container.Resolve<IEnumerable<Meta<IShapeTableProvider>>>())).AsSelf();
|
||||
builder.RegisterInstance(new Work<IEnumerable<IShapeTableEventHandler>>(resolve => _container.Resolve<IEnumerable<IShapeTableEventHandler>>())).AsSelf();
|
||||
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
|
||||
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Autofac;
|
||||
using Autofac.Features.Metadata;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Orchard.Caching;
|
||||
@@ -10,7 +9,6 @@ using Orchard.ContentManagement;
|
||||
using Orchard.DisplayManagement.Descriptors;
|
||||
using Orchard.DisplayManagement.Descriptors.ShapePlacementStrategy;
|
||||
using Orchard.DisplayManagement.Implementation;
|
||||
using Orchard.Environment;
|
||||
using Orchard.Environment.Extensions;
|
||||
using Orchard.Environment.Extensions.Models;
|
||||
using Orchard.Tests.Stubs;
|
||||
@@ -20,8 +18,7 @@ namespace Orchard.Tests.DisplayManagement.Descriptors {
|
||||
[TestFixture]
|
||||
public class DefaultShapeTableManagerTests : ContainerTestBase {
|
||||
protected override void Register(ContainerBuilder builder) {
|
||||
builder.RegisterInstance(new Work<IEnumerable<Meta<IShapeTableProvider>>>(resolve => _container.Resolve<IEnumerable<Meta<IShapeTableProvider>>>())).AsSelf();
|
||||
builder.RegisterInstance(new Work<IEnumerable<IShapeTableEventHandler>>(resolve => _container.Resolve<IEnumerable<IShapeTableEventHandler>>())).AsSelf();
|
||||
builder.RegisterInstance(new Orchard.Environment.Work<IEnumerable<IShapeTableEventHandler>>(resolve => _container.Resolve<IEnumerable<IShapeTableEventHandler>>())).AsSelf();
|
||||
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
|
||||
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
|
||||
builder.RegisterType<StubParallelCacheContext>().As<IParallelCacheContext>();
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
using System.Collections.Generic;
|
||||
using Autofac;
|
||||
using Autofac.Features.Metadata;
|
||||
using NUnit.Framework;
|
||||
using Orchard.Caching;
|
||||
using Orchard.DisplayManagement;
|
||||
using Orchard.DisplayManagement.Descriptors;
|
||||
using Orchard.DisplayManagement.Implementation;
|
||||
using Orchard.DisplayManagement.Shapes;
|
||||
using Orchard.Environment;
|
||||
using Orchard.Environment.Extensions;
|
||||
using Orchard.Tests.Stubs;
|
||||
|
||||
@@ -20,8 +18,7 @@ namespace Orchard.Tests.DisplayManagement {
|
||||
public void Init() {
|
||||
var builder = new ContainerBuilder();
|
||||
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
|
||||
builder.RegisterInstance(new Work<IEnumerable<Meta<IShapeTableProvider>>>(resolve => _container.Resolve<IEnumerable<Meta<IShapeTableProvider>>>())).AsSelf();
|
||||
builder.RegisterInstance(new Work<IEnumerable<IShapeTableEventHandler>>(resolve => _container.Resolve<IEnumerable<IShapeTableEventHandler>>())).AsSelf();
|
||||
builder.RegisterInstance(new Orchard.Environment.Work<IEnumerable<IShapeTableEventHandler>>(resolve => _container.Resolve<IEnumerable<IShapeTableEventHandler>>())).AsSelf();
|
||||
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
|
||||
builder.RegisterType<ShapeTableLocator>().As<IShapeTableLocator>();
|
||||
builder.RegisterType<StubExtensionManager>().As<IExtensionManager>();
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
using Autofac;
|
||||
using Autofac.Features.Metadata;
|
||||
using NUnit.Framework;
|
||||
using Orchard.Caching;
|
||||
using Orchard.DisplayManagement;
|
||||
using Orchard.DisplayManagement.Descriptors;
|
||||
using Orchard.DisplayManagement.Implementation;
|
||||
using Orchard.Environment;
|
||||
using Orchard.Environment.Extensions;
|
||||
using Orchard.Tests.Stubs;
|
||||
|
||||
@@ -19,8 +17,7 @@ namespace Orchard.Tests.DisplayManagement {
|
||||
public void Init() {
|
||||
var builder = new ContainerBuilder();
|
||||
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
|
||||
builder.RegisterInstance(new Work<IEnumerable<Meta<IShapeTableProvider>>>(resolve => _container.Resolve<IEnumerable<Meta<IShapeTableProvider>>>())).AsSelf();
|
||||
builder.RegisterInstance(new Work<IEnumerable<IShapeTableEventHandler>>(resolve => _container.Resolve<IEnumerable<IShapeTableEventHandler>>())).AsSelf();
|
||||
builder.RegisterInstance(new Orchard.Environment.Work<IEnumerable<IShapeTableEventHandler>>(resolve => _container.Resolve<IEnumerable<IShapeTableEventHandler>>())).AsSelf();
|
||||
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
|
||||
builder.RegisterType<ShapeTableLocator>().As<IShapeTableLocator>();
|
||||
builder.RegisterType<StubExtensionManager>().As<IExtensionManager>();
|
||||
|
||||
@@ -3,7 +3,6 @@ using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Routing;
|
||||
using Autofac;
|
||||
using Autofac.Features.Metadata;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Orchard.Caching;
|
||||
@@ -49,7 +48,6 @@ namespace Orchard.Tests.DisplayManagement {
|
||||
builder.RegisterType<DefaultDisplayManager>().As<IDisplayManager>();
|
||||
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
|
||||
builder.RegisterType<DisplayHelperFactory>().As<IDisplayHelperFactory>();
|
||||
builder.RegisterInstance(new Work<IEnumerable<Meta<IShapeTableProvider>>>(resolve => _container.Resolve<IEnumerable<Meta<IShapeTableProvider>>>())).AsSelf();
|
||||
builder.RegisterInstance(new Work<IEnumerable<IShapeTableEventHandler>>(resolve => _container.Resolve<IEnumerable<IShapeTableEventHandler>>())).AsSelf();
|
||||
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
|
||||
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
|
||||
|
||||
@@ -13,14 +13,14 @@ using Orchard.Utility.Extensions;
|
||||
namespace Orchard.DisplayManagement.Descriptors {
|
||||
|
||||
public class DefaultShapeTableManager : IShapeTableManager {
|
||||
private readonly Work<IEnumerable<Meta<IShapeTableProvider>>> _bindingStrategiesWork;
|
||||
private readonly IEnumerable<Meta<IShapeTableProvider>> _bindingStrategies;
|
||||
private readonly IExtensionManager _extensionManager;
|
||||
private readonly ICacheManager _cacheManager;
|
||||
private readonly IParallelCacheContext _parallelCacheContext;
|
||||
private readonly Work<IEnumerable<IShapeTableEventHandler>> _shapeTableEventHandlersWork;
|
||||
|
||||
public DefaultShapeTableManager(
|
||||
Work<IEnumerable<Meta<IShapeTableProvider>>> bindingStrategiesWork,
|
||||
IEnumerable<Meta<IShapeTableProvider>> bindingStrategies,
|
||||
IExtensionManager extensionManager,
|
||||
ICacheManager cacheManager,
|
||||
IParallelCacheContext parallelCacheContext,
|
||||
@@ -30,7 +30,7 @@ namespace Orchard.DisplayManagement.Descriptors {
|
||||
_cacheManager = cacheManager;
|
||||
_parallelCacheContext = parallelCacheContext;
|
||||
_shapeTableEventHandlersWork = shapeTableEventHandlersWork;
|
||||
_bindingStrategiesWork = bindingStrategiesWork;
|
||||
_bindingStrategies = bindingStrategies;
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace Orchard.DisplayManagement.Descriptors {
|
||||
return _cacheManager.Get(themeName ?? "", x => {
|
||||
Logger.Information("Start building shape table");
|
||||
|
||||
var alterationSets = _parallelCacheContext.RunInParallel(_bindingStrategiesWork.Value, bindingStrategy => {
|
||||
var alterationSets = _parallelCacheContext.RunInParallel(_bindingStrategies, bindingStrategy => {
|
||||
Feature strategyDefaultFeature = bindingStrategy.Metadata.ContainsKey("Feature") ?
|
||||
(Feature)bindingStrategy.Metadata["Feature"] :
|
||||
null;
|
||||
|
||||
Reference in New Issue
Block a user