diff --git a/src/Orchard.Tests.Modules/Setup/SetupControllerTests.cs b/src/Orchard.Tests.Modules/Setup/SetupControllerTests.cs index a2a9e09a8..5dcdf2a16 100644 --- a/src/Orchard.Tests.Modules/Setup/SetupControllerTests.cs +++ b/src/Orchard.Tests.Modules/Setup/SetupControllerTests.cs @@ -43,7 +43,7 @@ namespace Orchard.Tests.Modules.Setup { //builder.Register().As(); //builder.Register().As(); //builder.Register().As(); - //builder.Register().As(); + //builder.Register().As(); //builder.Register().As(); //_container = builder.Build(); } diff --git a/src/Orchard.Tests/Data/Builders/SessionFactoryBuilderTests.cs b/src/Orchard.Tests/Data/Builders/SessionFactoryBuilderTests.cs index 08d19c375..e907a7e04 100644 --- a/src/Orchard.Tests/Data/Builders/SessionFactoryBuilderTests.cs +++ b/src/Orchard.Tests/Data/Builders/SessionFactoryBuilderTests.cs @@ -2,7 +2,8 @@ using System.IO; using NUnit.Framework; using Orchard.Data.Builders; -using Orchard.Environment; +using Orchard.Environment.Topology; +using Orchard.Environment.Topology.Models; using Orchard.Tests.Records; namespace Orchard.Tests.Data.Builders { @@ -48,7 +49,7 @@ namespace Orchard.Tests.Data.Builders { [Test] public void SQLiteSchemaShouldBeGeneratedAndUsable() { var recordDescriptors = new[] { - new RecordDescriptor_Obsolete {Prefix = "Hello", Type = typeof (FooRecord)} + new RecordTopology {TableName = "Hello", Type = typeof (FooRecord)} }; var manager = (ISessionFactoryBuilder)new SessionFactoryBuilder(); var sessionFactory = manager.BuildSessionFactory(new SessionFactoryParameters { @@ -77,7 +78,7 @@ namespace Orchard.Tests.Data.Builders { CreateSqlServerDatabase(databasePath); var recordDescriptors = new[] { - new RecordDescriptor_Obsolete {Prefix = "Hello", Type = typeof (FooRecord)} + new RecordTopology {TableName = "Hello", Type = typeof (FooRecord)} }; var manager = (ISessionFactoryBuilder)new SessionFactoryBuilder(); diff --git a/src/Orchard.Tests/DataUtility.cs b/src/Orchard.Tests/DataUtility.cs index c7ce8e04e..bc8981ea4 100644 --- a/src/Orchard.Tests/DataUtility.cs +++ b/src/Orchard.Tests/DataUtility.cs @@ -10,7 +10,8 @@ using NHibernate; using NHibernate.Tool.hbm2ddl; using Orchard.Data; using Orchard.Data.Builders; -using Orchard.Environment; +using Orchard.Environment.Topology; +using Orchard.Environment.Topology.Models; namespace Orchard.Tests { public static class DataUtility { @@ -19,7 +20,7 @@ namespace Orchard.Tests { //var persistenceModel = AutoMap.Source(new Types(types)) // .Alterations(alt => AddAlterations(alt, types)) // .Conventions.AddFromAssemblyOf(); - var persistenceModel = AbstractBuilder.CreatePersistenceModel(types.Select(t => new RecordDescriptor_Obsolete { Prefix = "Test", Type = t })); + var persistenceModel = AbstractBuilder.CreatePersistenceModel(types.Select(t => new RecordTopology { TableName = "Test", Type = t })); return Fluently.Configure() .Database(SQLiteConfiguration.Standard.UsingFile(fileName).ShowSql()) diff --git a/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs b/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs index 650dab337..6bae8039a 100644 --- a/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs +++ b/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs @@ -26,7 +26,7 @@ namespace Orchard.Tests.Environment.Configuration { _appData.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else"); - ITenantManager loader = new DefaultTenantManager(_appData); + IShellSettingsManager loader = new ShellSettingsManager(_appData); var settings = loader.LoadSettings().Single(); Assert.That(settings, Is.Not.Null); Assert.That(settings.Name, Is.EqualTo("Default")); @@ -41,7 +41,7 @@ namespace Orchard.Tests.Environment.Configuration { _appData.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else"); _appData.CreateFile("Sites\\Another\\Settings.txt", "Name: Another\r\nDataProvider: SQLite2\r\nDataConnectionString: something else2"); - ITenantManager loader = new DefaultTenantManager(_appData); + IShellSettingsManager loader = new ShellSettingsManager(_appData); var settings = loader.LoadSettings(); Assert.That(settings.Count(), Is.EqualTo(2)); @@ -60,7 +60,7 @@ namespace Orchard.Tests.Environment.Configuration { public void NewSettingsCanBeStored() { _appData.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else"); - ITenantManager loader = new DefaultTenantManager(_appData); + IShellSettingsManager loader = new ShellSettingsManager(_appData); var foo = new ShellSettings {Name = "Foo", DataProvider = "Bar", DataConnectionString = "Quux"}; Assert.That(loader.LoadSettings().Count(), Is.EqualTo(1)); diff --git a/src/Orchard.Tests/Environment/DefaultCompositionStrategyTests.cs b/src/Orchard.Tests/Environment/DefaultCompositionStrategyTests.cs index a4594921c..f3e6b81fa 100644 --- a/src/Orchard.Tests/Environment/DefaultCompositionStrategyTests.cs +++ b/src/Orchard.Tests/Environment/DefaultCompositionStrategyTests.cs @@ -8,7 +8,6 @@ using Autofac.Core; using Moq; using NUnit.Framework; using Orchard.ContentManagement.Records; -using Orchard.Environment; using Orchard.Environment.Extensions; using Orchard.Environment.Extensions.Models; using Orchard.Environment.Topology; @@ -29,7 +28,7 @@ namespace Orchard.Tests.Environment { [SetUp] public void Init() { var builder = new ContainerBuilder(); - builder.RegisterType().As(); + builder.RegisterType().As(); builder.RegisterAutoMocking(MockBehavior.Strict); _container = builder.Build(); diff --git a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs index 1e276abc3..485aff5cd 100644 --- a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs +++ b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs @@ -41,7 +41,7 @@ namespace Orchard.Tests.Environment { builder => { //builder.RegisterModule(new ImplicitCollectionSupportModule()); builder.RegisterType().As().InstancePerLifetimeScope(); - builder.RegisterType().As().As().InstancePerLifetimeScope(); + builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().SingleInstance(); builder.RegisterType().As(); builder.RegisterType().As(); @@ -52,7 +52,7 @@ namespace Orchard.Tests.Environment { builder.RegisterInstance(new ViewEngineCollection { new WebFormViewEngine() }); builder.RegisterInstance(new StuExtensionManager()).As(); builder.RegisterInstance(new Mock().Object); - builder.RegisterInstance(new StubShellSettingsLoader()).As(); + builder.RegisterInstance(new StubShellSettingsLoader()).As(); builder.RegisterInstance(new Mock().Object); }); _lifetime = _container.BeginLifetimeScope(); @@ -61,7 +61,7 @@ namespace Orchard.Tests.Environment { updater.Update(_lifetime); } - public class StubShellSettingsLoader : ITenantManager { + public class StubShellSettingsLoader : IShellSettingsManager { private readonly List _shellSettings = new List {new ShellSettings {Name = "testing"}}; @@ -91,10 +91,6 @@ namespace Orchard.Tests.Environment { return Enumerable.Empty(); } - public ShellTopology_Obsolete GetExtensionsTopology() { - throw new NotImplementedException(); - } - public Feature LoadFeature(string featureName) { throw new NotImplementedException(); } @@ -117,11 +113,7 @@ namespace Orchard.Tests.Environment { Assert.That(_controllerBuilder.GetControllerFactory(), Is.TypeOf()); } - public class StubCompositionStrategy : ICompositionStrategy_Obsolete, ICompositionStrategy { - public IEnumerable GetRecordDescriptors_Obsolete() { - return Enumerable.Empty(); - } - + public class StubCompositionStrategy : ICompositionStrategy { public ShellTopology Compose(ShellTopologyDescriptor descriptor) { throw new NotImplementedException(); } diff --git a/src/Orchard.Tests/Environment/Topology/DefaultTopologyDescriptorCacheTests.cs b/src/Orchard.Tests/Environment/Topology/DefaultTopologyDescriptorCacheTests.cs index 0acdd32bd..51fe39aaf 100644 --- a/src/Orchard.Tests/Environment/Topology/DefaultTopologyDescriptorCacheTests.cs +++ b/src/Orchard.Tests/Environment/Topology/DefaultTopologyDescriptorCacheTests.cs @@ -23,7 +23,7 @@ namespace Orchard.Tests.Environment.Topology { _appDataFolder.SetBasePath(_tempFolder); var builder = new ContainerBuilder(); builder.RegisterInstance(_appDataFolder).As(); - builder.RegisterType().As(); + builder.RegisterType().As(); _container = builder.Build(); } diff --git a/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs b/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs index 9251c9a55..bb67e703b 100644 --- a/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs +++ b/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs @@ -87,10 +87,6 @@ namespace Orchard.Tests.Mvc.Routes { }; } - public ShellTopology_Obsolete GetExtensionsTopology() { - throw new NotImplementedException(); - } - public Feature LoadFeature(string featureName) { throw new NotImplementedException(); } diff --git a/src/Orchard.Web/Config/Sample.Host.config b/src/Orchard.Web/Config/Sample.Host.config index acce66e1a..a50b9249a 100644 --- a/src/Orchard.Web/Config/Sample.Host.config +++ b/src/Orchard.Web/Config/Sample.Host.config @@ -10,7 +10,7 @@ + service="Orchard.Environment.Configuration.IShellSettingsManager"> diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs b/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs index 8806e0686..6c65b77a8 100644 --- a/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs +++ b/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs @@ -21,17 +21,17 @@ namespace Orchard.Setup.Controllers { public class SetupController : Controller { private readonly INotifier _notifier; private readonly IOrchardHost _orchardHost; - private readonly ITenantManager _tenantManager; + private readonly IShellSettingsManager _shellSettingsManager; private readonly IAppDataFolder _appDataFolder; public SetupController( INotifier notifier, IOrchardHost orchardHost, - ITenantManager tenantManager, + IShellSettingsManager shellSettingsManager, IAppDataFolder appDataFolder) { _notifier = notifier; _orchardHost = orchardHost; - _tenantManager = tenantManager; + _shellSettingsManager = shellSettingsManager; _appDataFolder = appDataFolder; T = NullLocalizer.Instance; } @@ -134,7 +134,7 @@ namespace Orchard.Setup.Controllers { } } - _tenantManager.SaveSettings(shellSettings); + _shellSettingsManager.SaveSettings(shellSettings); _orchardHost.Reinitialize_Obsolete(); diff --git a/src/Orchard/Commands/CommandHostAgent.cs b/src/Orchard/Commands/CommandHostAgent.cs index cccccbff6..128401562 100644 --- a/src/Orchard/Commands/CommandHostAgent.cs +++ b/src/Orchard/Commands/CommandHostAgent.cs @@ -24,7 +24,7 @@ namespace Orchard.Commands { // Find tenant (or default) tenant = tenant ?? "default"; - var tenantManager = hostContainer.Resolve(); + var tenantManager = hostContainer.Resolve(); var tenantSettings = tenantManager.LoadSettings().Single(s => String.Equals(s.Name, tenant, StringComparison.OrdinalIgnoreCase)); // Disptach command execution to ICommandManager diff --git a/src/Orchard/ContentManagement/Records/ContentItemAlteration.cs b/src/Orchard/ContentManagement/Records/ContentItemAlteration.cs index b4f02d832..67959459e 100644 --- a/src/Orchard/ContentManagement/Records/ContentItemAlteration.cs +++ b/src/Orchard/ContentManagement/Records/ContentItemAlteration.cs @@ -8,18 +8,19 @@ using System.Reflection.Emit; using FluentNHibernate.Automapping; using FluentNHibernate.Automapping.Alterations; using JetBrains.Annotations; -using Orchard.Environment; +using Orchard.Environment.Topology; +using Orchard.Environment.Topology.Models; namespace Orchard.ContentManagement.Records { class ContentItemAlteration : IAutoMappingAlteration { - private readonly IEnumerable _recordDescriptors; + private readonly IEnumerable _recordDescriptors; [UsedImplicitly] public ContentItemAlteration() { - _recordDescriptors = Enumerable.Empty(); + _recordDescriptors = Enumerable.Empty(); } - public ContentItemAlteration(IEnumerable recordDescriptors) { + public ContentItemAlteration(IEnumerable recordDescriptors) { _recordDescriptors = recordDescriptors; } diff --git a/src/Orchard/Data/Builders/AbstractBuilder.cs b/src/Orchard/Data/Builders/AbstractBuilder.cs index 98baadf06..7fa409446 100644 --- a/src/Orchard/Data/Builders/AbstractBuilder.cs +++ b/src/Orchard/Data/Builders/AbstractBuilder.cs @@ -11,7 +11,8 @@ using NHibernate.Cfg; using NHibernate.Tool.hbm2ddl; using Orchard.ContentManagement.Records; using Orchard.Data.Conventions; -using Orchard.Environment; +using Orchard.Environment.Topology; +using Orchard.Environment.Topology.Models; namespace Orchard.Data.Builders { public abstract class AbstractBuilder { @@ -41,7 +42,7 @@ namespace Orchard.Data.Builders { } } - public static AutoPersistenceModel CreatePersistenceModel(IEnumerable recordDescriptors) { + public static AutoPersistenceModel CreatePersistenceModel(IEnumerable recordDescriptors) { return AutoMap.Source(new TypeSource(recordDescriptors)) // Ensure that namespaces of types are never auto-imported, so that // identical type names from different namespaces can be mapped without ambiguity @@ -58,9 +59,9 @@ namespace Orchard.Data.Builders { } class TypeSource : ITypeSource { - private readonly IEnumerable _recordDescriptors; + private readonly IEnumerable _recordDescriptors; - public TypeSource(IEnumerable recordDescriptors) { _recordDescriptors = recordDescriptors; } + public TypeSource(IEnumerable recordDescriptors) { _recordDescriptors = recordDescriptors; } public IEnumerable GetTypes() { return _recordDescriptors.Select(descriptor => descriptor.Type); } } diff --git a/src/Orchard/Data/Builders/ISessionFactoryBuilder.cs b/src/Orchard/Data/Builders/ISessionFactoryBuilder.cs index b671108cc..c8a3036d1 100644 --- a/src/Orchard/Data/Builders/ISessionFactoryBuilder.cs +++ b/src/Orchard/Data/Builders/ISessionFactoryBuilder.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using NHibernate; -using Orchard.Environment; +using Orchard.Environment.Topology; +using Orchard.Environment.Topology.Models; namespace Orchard.Data.Builders { @@ -16,6 +17,6 @@ namespace Orchard.Data.Builders { public bool CreateDatabase { get; set; } public bool UpdateSchema { get; set; } - public IEnumerable RecordDescriptors { get; set; } + public IEnumerable RecordDescriptors { get; set; } } } diff --git a/src/Orchard/Data/Conventions/RecordTableNameConvention.cs b/src/Orchard/Data/Conventions/RecordTableNameConvention.cs index 6ace895a8..beb7db7f6 100644 --- a/src/Orchard/Data/Conventions/RecordTableNameConvention.cs +++ b/src/Orchard/Data/Conventions/RecordTableNameConvention.cs @@ -2,22 +2,21 @@ using System.Collections.Generic; using System.Linq; using FluentNHibernate.Conventions; using FluentNHibernate.Conventions.Instances; -using Orchard.Environment; +using Orchard.Environment.Topology; +using Orchard.Environment.Topology.Models; namespace Orchard.Data.Conventions { public class RecordTableNameConvention : IClassConvention { - private readonly IEnumerable _descriptors; + private readonly IEnumerable _descriptors; - public RecordTableNameConvention(IEnumerable descriptors) { + public RecordTableNameConvention(IEnumerable descriptors) { _descriptors = descriptors; } public void Apply(IClassInstance instance) { var desc = _descriptors.Where(d => d.Type == instance.EntityType).SingleOrDefault(); if (desc != null) { - if (!string.IsNullOrEmpty(desc.Prefix)) { - instance.Table(desc.Prefix + "_" + desc.Type.Name); - } + instance.Table(desc.TableName); } } } diff --git a/src/Orchard/Data/SessionFactoryHolder.cs b/src/Orchard/Data/SessionFactoryHolder.cs index 034ca5bb5..e072559c2 100644 --- a/src/Orchard/Data/SessionFactoryHolder.cs +++ b/src/Orchard/Data/SessionFactoryHolder.cs @@ -2,8 +2,9 @@ using System.IO; using NHibernate; using Orchard.Data.Builders; -using Orchard.Environment; using Orchard.Environment.Configuration; +using Orchard.Environment.Topology; +using Orchard.Environment.Topology.Models; using Orchard.Logging; namespace Orchard.Data { @@ -15,7 +16,7 @@ namespace Orchard.Data { public class SessionFactoryHolder : ISessionFactoryHolder { private readonly ShellSettings _shellSettings; - private readonly ICompositionStrategy_Obsolete _compositionStrategy; + private readonly ShellTopology _shellTopology; private readonly ISessionFactoryBuilder _sessionFactoryBuilder; private readonly IAppDataFolder _appDataFolder; @@ -23,11 +24,11 @@ namespace Orchard.Data { public SessionFactoryHolder( ShellSettings shellSettings, - ICompositionStrategy_Obsolete compositionStrategy, + ShellTopology shellTopology, ISessionFactoryBuilder sessionFactoryBuilder, IAppDataFolder appDataFolder) { _shellSettings = shellSettings; - _compositionStrategy = compositionStrategy; + _shellTopology = shellTopology; _sessionFactoryBuilder = sessionFactoryBuilder; _appDataFolder = appDataFolder; Logger = NullLogger.Instance; @@ -77,7 +78,7 @@ namespace Orchard.Data { ConnectionString = _shellSettings.DataConnectionString, CreateDatabase = createDatabase, UpdateSchema = updateSchema, - RecordDescriptors = _compositionStrategy.GetRecordDescriptors_Obsolete(), + RecordDescriptors = _shellTopology.Records, }); return sessionFactory; diff --git a/src/Orchard/Environment/Configuration/AzureBlobTenantManager.cs b/src/Orchard/Environment/Configuration/AzureBlobTenantManager.cs deleted file mode 100644 index 51270363a..000000000 --- a/src/Orchard/Environment/Configuration/AzureBlobTenantManager.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Orchard.Environment.Configuration { - public class AzureBlobTenantManager : ITenantManager{ - public AzureBlobTenantManager(string foo) { - int x = 5; - } - - public string Foo { get; set; } - - public IEnumerable LoadSettings() { - throw new NotImplementedException(); - } - - public void SaveSettings(ShellSettings settings) { - throw new NotImplementedException(); - } - } -} diff --git a/src/Orchard/Environment/Configuration/ITenantManager.cs b/src/Orchard/Environment/Configuration/ITenantManager.cs deleted file mode 100644 index aa512a07a..000000000 --- a/src/Orchard/Environment/Configuration/ITenantManager.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System.Collections.Generic; - -namespace Orchard.Environment.Configuration { - public interface ITenantManager { - IEnumerable LoadSettings(); - void SaveSettings(ShellSettings settings); - } -} \ No newline at end of file diff --git a/src/Orchard/Environment/Configuration/DefaultTenantManager.cs b/src/Orchard/Environment/Configuration/ShellSettingsManager.cs similarity index 83% rename from src/Orchard/Environment/Configuration/DefaultTenantManager.cs rename to src/Orchard/Environment/Configuration/ShellSettingsManager.cs index 587c49821..1072d342a 100644 --- a/src/Orchard/Environment/Configuration/DefaultTenantManager.cs +++ b/src/Orchard/Environment/Configuration/ShellSettingsManager.cs @@ -6,20 +6,25 @@ using System.Yaml.Serialization; using Orchard.Localization; namespace Orchard.Environment.Configuration { - public class DefaultTenantManager : ITenantManager { + public interface IShellSettingsManager { + IEnumerable LoadSettings(); + void SaveSettings(ShellSettings settings); + } + + public class ShellSettingsManager : IShellSettingsManager { private readonly IAppDataFolder _appDataFolder; Localizer T { get; set; } - public DefaultTenantManager(IAppDataFolder appDataFolder) { + public ShellSettingsManager(IAppDataFolder appDataFolder) { _appDataFolder = appDataFolder; T = NullLocalizer.Instance; } - IEnumerable ITenantManager.LoadSettings() { + IEnumerable IShellSettingsManager.LoadSettings() { return LoadSettings().ToArray(); } - void ITenantManager.SaveSettings(ShellSettings settings) { + void IShellSettingsManager.SaveSettings(ShellSettings settings) { if (settings == null) throw new ArgumentException(T("There are no settings to save.").ToString()); if (string.IsNullOrEmpty(settings.Name)) diff --git a/src/Orchard/Environment/DefaultOrchardHost.cs b/src/Orchard/Environment/DefaultOrchardHost.cs index 9d6be2ce7..5ea9f3374 100644 --- a/src/Orchard/Environment/DefaultOrchardHost.cs +++ b/src/Orchard/Environment/DefaultOrchardHost.cs @@ -16,18 +16,18 @@ namespace Orchard.Environment { //private readonly IContainerProvider _containerProvider; private readonly ControllerBuilder _controllerBuilder; - private readonly ITenantManager _tenantManager; + private readonly IShellSettingsManager _shellSettingsManager; private readonly IShellContextFactory _shellContextFactory; private IEnumerable _current; public DefaultOrchardHost( //IContainerProvider containerProvider, - ITenantManager tenantManager, + IShellSettingsManager shellSettingsManager, IShellContextFactory shellContextFactory, ControllerBuilder controllerBuilder) { //_containerProvider = containerProvider; - _tenantManager = tenantManager; + _shellSettingsManager = shellSettingsManager; _shellContextFactory = shellContextFactory; _controllerBuilder = controllerBuilder; Logger = NullLogger.Instance; @@ -75,7 +75,7 @@ namespace Orchard.Environment { } IEnumerable CreateAndActivate() { - var allSettings = _tenantManager.LoadSettings(); + var allSettings = _shellSettingsManager.LoadSettings(); if (allSettings.Any()) { return allSettings.Select( settings => { diff --git a/src/Orchard/Environment/Extensions/ExtensionManager.cs b/src/Orchard/Environment/Extensions/ExtensionManager.cs index 10da70563..7225956f0 100644 --- a/src/Orchard/Environment/Extensions/ExtensionManager.cs +++ b/src/Orchard/Environment/Extensions/ExtensionManager.cs @@ -112,12 +112,6 @@ namespace Orchard.Environment.Extensions { return featureDescriptors; } - public ShellTopology_Obsolete GetExtensionsTopology() { - var types = ActiveExtensions_Obsolete().SelectMany(x => x.ExportedTypes); - types = types.Concat(typeof(IOrchardHost).Assembly.GetExportedTypes()); - return new ShellTopology_Obsolete { Types = types.Where(t => t.IsClass && !t.IsAbstract) }; - } - public Feature LoadFeature(FeatureDescriptor featureDescriptor) { if (featureDescriptor.Name == "Orchard.Framework") { return new Feature { diff --git a/src/Orchard/Environment/Extensions/IExtensionManager.cs b/src/Orchard/Environment/Extensions/IExtensionManager.cs index 57de5babc..feb59ebc1 100644 --- a/src/Orchard/Environment/Extensions/IExtensionManager.cs +++ b/src/Orchard/Environment/Extensions/IExtensionManager.cs @@ -9,7 +9,6 @@ namespace Orchard.Environment.Extensions { Feature LoadFeature(FeatureDescriptor featureDescriptor); IEnumerable ActiveExtensions_Obsolete(); - ShellTopology_Obsolete GetExtensionsTopology(); void InstallExtension(string extensionType, HttpPostedFileBase extensionBundle); void UninstallExtension(string extensionType, string extensionName); } diff --git a/src/Orchard/Environment/Extensions/IExtensionManagerEvents.cs b/src/Orchard/Environment/Extensions/IExtensionManagerEvents.cs index e4034bab5..b2368af52 100644 --- a/src/Orchard/Environment/Extensions/IExtensionManagerEvents.cs +++ b/src/Orchard/Environment/Extensions/IExtensionManagerEvents.cs @@ -13,29 +13,14 @@ namespace Orchard.Environment.Extensions { } public abstract class ExtensionManagerEvents : IExtensionManagerEvents { - public virtual void Enabling(ExtensionEventContext context) { - } - - public virtual void Enabled(ExtensionEventContext context) { - } - - public virtual void Disabling(ExtensionEventContext context) { - } - - public virtual void Disabled(ExtensionEventContext context) { - } - - public virtual void Activating(ExtensionEventContext context) { - } - - public virtual void Activated(ExtensionEventContext context) { - } - - public virtual void Deactivating(ExtensionEventContext context) { - } - - public virtual void Deactivated(ExtensionEventContext context) { - } + public virtual void Enabling(ExtensionEventContext context) { } + public virtual void Enabled(ExtensionEventContext context) { } + public virtual void Disabling(ExtensionEventContext context) {} + public virtual void Disabled(ExtensionEventContext context) {} + public virtual void Activating(ExtensionEventContext context) {} + public virtual void Activated(ExtensionEventContext context) {} + public virtual void Deactivating(ExtensionEventContext context) {} + public virtual void Deactivated(ExtensionEventContext context) {} } public class ExtensionEventContext { diff --git a/src/Orchard/Environment/FiniteContainerProvider.cs b/src/Orchard/Environment/FiniteContainerProvider.cs index 2c32f7b49..5715c886e 100644 --- a/src/Orchard/Environment/FiniteContainerProvider.cs +++ b/src/Orchard/Environment/FiniteContainerProvider.cs @@ -1,6 +1,5 @@ using Autofac; using Autofac.Integration.Web; -using Orchard.Environment.AutofacUtil; namespace Orchard.Environment { @@ -8,11 +7,11 @@ namespace Orchard.Environment { public FiniteContainerProvider(ILifetimeScope applicationContainer) { //ApplicationContainer = applicationContainer; - RequestLifetime = applicationContainer.BeginLifetimeScope(); - var builder = new ContainerUpdater(); - // also inject this instance in case anyone asks for the container provider - builder.RegisterInstance(this).As(); - builder.Update(RequestLifetime); + RequestLifetime = applicationContainer.BeginLifetimeScope( + builder=> { + // also inject this instance in case anyone asks for the container provider + builder.Register(ctx => this).As(); + }); } public void EndRequestLifetime() { diff --git a/src/Orchard/Environment/OrchardStarter.cs b/src/Orchard/Environment/OrchardStarter.cs index 2f1dc0662..76761aa52 100644 --- a/src/Orchard/Environment/OrchardStarter.cs +++ b/src/Orchard/Environment/OrchardStarter.cs @@ -29,15 +29,14 @@ namespace Orchard.Environment { builder.RegisterType().As().SingleInstance(); { - builder.RegisterType().As().SingleInstance(); + builder.RegisterType().As().SingleInstance(); builder.RegisterType().As().SingleInstance(); { - builder.RegisterType().As().SingleInstance(); + builder.RegisterType().As().SingleInstance(); - builder.RegisterType() + builder.RegisterType() .As() - .As() .SingleInstance(); { builder.RegisterType().As().SingleInstance(); diff --git a/src/Orchard/Environment/DefaultCompositionStrategy.cs b/src/Orchard/Environment/Topology/CompositionStrategy.cs similarity index 63% rename from src/Orchard/Environment/DefaultCompositionStrategy.cs rename to src/Orchard/Environment/Topology/CompositionStrategy.cs index 40fca6ca1..da591b7b3 100644 --- a/src/Orchard/Environment/DefaultCompositionStrategy.cs +++ b/src/Orchard/Environment/Topology/CompositionStrategy.cs @@ -8,35 +8,33 @@ using Orchard.ContentManagement; using Orchard.ContentManagement.Records; using Orchard.Environment.Extensions; using Orchard.Environment.Extensions.Models; -using Orchard.Environment.Topology; using Orchard.Environment.Topology.Models; -using Orchard.Utility.Extensions; -namespace Orchard.Environment { - //TEMP: This will be replaced by packaging system - - public interface ICompositionStrategy_Obsolete { - IEnumerable GetRecordDescriptors_Obsolete(); +namespace Orchard.Environment.Topology { + /// + /// Service at the host level to transform the cachable topology into the loadable topology. + /// + public interface ICompositionStrategy { + /// + /// Using information from the IExtensionManager, transforms and populates all of the + /// topology model the shell builders will need to correctly initialize a tenant IoC container. + /// + ShellTopology Compose(ShellTopologyDescriptor descriptor); } - public class RecordDescriptor_Obsolete { - public Type Type { get; set; } - public string Prefix { get; set; } - } - - public class DefaultCompositionStrategy : ICompositionStrategy, ICompositionStrategy_Obsolete { + public class CompositionStrategy : ICompositionStrategy { private readonly IExtensionManager _extensionManager; - public DefaultCompositionStrategy(IExtensionManager extensionManager) { + public CompositionStrategy(IExtensionManager extensionManager) { _extensionManager = extensionManager; } public ShellTopology Compose(ShellTopologyDescriptor topologyDescriptor) { - var featureDescriptors = _extensionManager.AvailableExtensions() + var enabledFeatures = _extensionManager.AvailableExtensions() .SelectMany(extensionDescriptor => extensionDescriptor.Features) .Where(featureDescriptor => IsFeatureEnabledInTopology(featureDescriptor, topologyDescriptor)); - var features = _extensionManager.LoadFeatures(featureDescriptors); + var features = _extensionManager.LoadFeatures(enabledFeatures); return new ShellTopology { Modules = BuildTopology(features, IsModule, BuildModule), @@ -108,7 +106,7 @@ namespace Orchard.Environment { (type.GetProperty("Id").GetAccessors() ?? Enumerable.Empty()).All(x => x.IsVirtual) && !type.IsSealed && !type.IsAbstract && - (!typeof(IContent).IsAssignableFrom(type) || typeof(ContentPartRecord).IsAssignableFrom(type)); ; + (!typeof(IContent).IsAssignableFrom(type) || typeof(ContentPartRecord).IsAssignableFrom(type)); } private static RecordTopology BuildRecord(Type type, Feature feature) { @@ -121,39 +119,5 @@ namespace Orchard.Environment { TableName = extensionName + '_' + type.Name, }; } - - - public IEnumerable GetRecordDescriptors_Obsolete() { - var descriptors = new List{ - new RecordDescriptor_Obsolete { Prefix = "Core", Type = typeof (ContentTypeRecord)}, - new RecordDescriptor_Obsolete { Prefix = "Core", Type = typeof (ContentItemRecord)}, - new RecordDescriptor_Obsolete { Prefix = "Core", Type = typeof (ContentItemVersionRecord)}, - }; - - foreach (var extension in _extensionManager.ActiveExtensions_Obsolete()) { - var prefix = extension.Descriptor.Name - .Replace("Orchard.", "") - .Replace(".", "_"); - - var recordDescriptors = extension - .ExportedTypes - .Where(IsRecordType) - .Select(type => new RecordDescriptor_Obsolete { Prefix = prefix, Type = type }); - - descriptors.AddRange(recordDescriptors); - } - - return descriptors.ToReadOnlyCollection(); - } - - private static bool IsRecordType(Type type) { - return ((type.Namespace ?? "").EndsWith(".Models") || (type.Namespace ?? "").EndsWith(".Records")) && - type.GetProperty("Id") != null && - (type.GetProperty("Id").GetAccessors() ?? Enumerable.Empty()).All(x => x.IsVirtual) && - !type.IsSealed && - !type.IsAbstract && - (!typeof(IContent).IsAssignableFrom(type) || typeof(ContentPartRecord).IsAssignableFrom(type)); - } - } } \ No newline at end of file diff --git a/src/Orchard/Environment/Topology/ICompositionStrategy.cs b/src/Orchard/Environment/Topology/ICompositionStrategy.cs deleted file mode 100644 index 62ffed76f..000000000 --- a/src/Orchard/Environment/Topology/ICompositionStrategy.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Orchard.Environment.Topology.Models; - -namespace Orchard.Environment.Topology { - /// - /// Service at the host level to transform the cachable topology into the loadable topology. - /// - public interface ICompositionStrategy { - /// - /// Using information from the IExtensionManager, transforms and populates all of the - /// topology model the shell builders will need to correctly initialize a tenant IoC container. - /// - ShellTopology Compose(ShellTopologyDescriptor descriptor); - } -} diff --git a/src/Orchard/Environment/Topology/ITopologyDescriptorCache.cs b/src/Orchard/Environment/Topology/ITopologyDescriptorCache.cs deleted file mode 100644 index 576a93c26..000000000 --- a/src/Orchard/Environment/Topology/ITopologyDescriptorCache.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Orchard.Environment.Topology.Models; - -namespace Orchard.Environment.Topology { - /// - /// Single service instance registered at the host level. Provides storage - /// and recall of topology descriptor information. Default implementation uses - /// app_data, but configured replacements could use other per-host writable location. - /// - public interface ITopologyDescriptorCache { - /// - /// Recreate the named configuration information. Used at startup. - /// Returns null on cache-miss. - /// - ShellTopologyDescriptor Fetch(string name); - - /// - /// Commit named configuration to reasonable persistent storage. - /// This storage is scoped to the current-server and current-webapp. - /// Loss of storage is expected. - /// - void Store(string name, ShellTopologyDescriptor descriptor); - } -} diff --git a/src/Orchard/Environment/Topology/DefaultTopologyDescriptorCache.cs b/src/Orchard/Environment/Topology/TopologyDescriptorCache.cs similarity index 78% rename from src/Orchard/Environment/Topology/DefaultTopologyDescriptorCache.cs rename to src/Orchard/Environment/Topology/TopologyDescriptorCache.cs index 6810742fb..1f6d64091 100644 --- a/src/Orchard/Environment/Topology/DefaultTopologyDescriptorCache.cs +++ b/src/Orchard/Environment/Topology/TopologyDescriptorCache.cs @@ -8,11 +8,31 @@ using Orchard.Localization; using Orchard.Logging; namespace Orchard.Environment.Topology { - public class DefaultTopologyDescriptorCache : ITopologyDescriptorCache { + /// + /// Single service instance registered at the host level. Provides storage + /// and recall of topology descriptor information. Default implementation uses + /// app_data, but configured replacements could use other per-host writable location. + /// + public interface ITopologyDescriptorCache { + /// + /// Recreate the named configuration information. Used at startup. + /// Returns null on cache-miss. + /// + ShellTopologyDescriptor Fetch(string name); + + /// + /// Commit named configuration to reasonable persistent storage. + /// This storage is scoped to the current-server and current-webapp. + /// Loss of storage is expected. + /// + void Store(string name, ShellTopologyDescriptor descriptor); + } + + public class TopologyDescriptorCache : ITopologyDescriptorCache { private readonly IAppDataFolder _appDataFolder; private const string TopologyCacheFileName = "cache.dat"; - public DefaultTopologyDescriptorCache(IAppDataFolder appDataFolder) { + public TopologyDescriptorCache(IAppDataFolder appDataFolder) { _appDataFolder = appDataFolder; T = NullLocalizer.Instance; Logger = NullLogger.Instance; diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index ae1e7587f..1211da215 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -123,7 +123,7 @@ - + @@ -165,16 +165,12 @@ - - - + - - + -