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 commits 411e3f9ddd and b21d637ba4.
This commit is contained in:
Zoltán Lehóczky
2014-10-08 15:22:56 +02:00
parent b21d637ba4
commit 872a1de928
7 changed files with 8 additions and 24 deletions

View File

@@ -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>();

View File

@@ -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>();

View File

@@ -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>();

View File

@@ -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>();

View File

@@ -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>();

View File

@@ -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>();

View File

@@ -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;