From 0e3352c560e7f19ba46fa1b0ccee56286100875d Mon Sep 17 00:00:00 2001 From: Suha Can Date: Wed, 7 Apr 2010 18:01:15 -0700 Subject: [PATCH] - ShellTopology to be returned from ExtensionsManager. It contains types from active extensions. - Modifying some unit tests accordingly. --HG-- branch : dev --- src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs | 2 +- src/Orchard.Tests/Extensions/ExtensionManagerTests.cs | 4 ++-- .../Mvc/Routes/StandardExtensionRouteProviderTests.cs | 2 +- src/Orchard/Environment/DefaultCompositionStrategy.cs | 4 ++-- src/Orchard/Extensions/ExtensionManager.cs | 4 ++-- src/Orchard/Extensions/IExtensionManager.cs | 5 ++--- src/Orchard/Extensions/ShellTopology.cs | 8 ++++++++ src/Orchard/Orchard.Framework.csproj | 1 + 8 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 src/Orchard/Extensions/ShellTopology.cs diff --git a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs index 3b7ab07f8..bd92425da 100644 --- a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs +++ b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs @@ -77,7 +77,7 @@ namespace Orchard.Tests.Environment { return Enumerable.Empty(); } - public IEnumerable GetExtensionsTopology() { + public ShellTopology GetExtensionsTopology() { throw new NotImplementedException(); } diff --git a/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs b/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs index b16bf13f1..a92225d89 100644 --- a/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs +++ b/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs @@ -178,14 +178,14 @@ features: public void ExtensionManagerShouldReturnTopology() { var topology = _manager.GetExtensionsTopology(); - Assert.That(topology.Count(), Is.Not.EqualTo(0)); + Assert.That(topology.Types.Count(), Is.Not.EqualTo(0)); } [Test] public void ExtensionManagerTopologyShouldContainNonAbstractClasses() { var topology = _manager.GetExtensionsTopology(); - foreach (var type in topology) { + foreach (var type in topology.Types) { Assert.That(type.IsClass); Assert.That(!type.IsAbstract); } diff --git a/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs b/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs index 0ce1436e8..a61b70ad7 100644 --- a/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs +++ b/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs @@ -54,7 +54,7 @@ namespace Orchard.Tests.Mvc.Routes { }; } - public IEnumerable GetExtensionsTopology() { + public ShellTopology GetExtensionsTopology() { throw new NotImplementedException(); } diff --git a/src/Orchard/Environment/DefaultCompositionStrategy.cs b/src/Orchard/Environment/DefaultCompositionStrategy.cs index 9bd078646..230f279b8 100644 --- a/src/Orchard/Environment/DefaultCompositionStrategy.cs +++ b/src/Orchard/Environment/DefaultCompositionStrategy.cs @@ -31,11 +31,11 @@ namespace Orchard.Environment { } public IEnumerable GetModuleTypes() { - return _extensionManager.GetExtensionsTopology().Where(t => typeof(IModule).IsAssignableFrom(t)); + return _extensionManager.GetExtensionsTopology().Types.Where(t => typeof(IModule).IsAssignableFrom(t)); } public IEnumerable GetDependencyTypes() { - return _extensionManager.GetExtensionsTopology().Where(t => typeof(IDependency).IsAssignableFrom(t)); + return _extensionManager.GetExtensionsTopology().Types.Where(t => typeof(IDependency).IsAssignableFrom(t)); } public IEnumerable GetRecordDescriptors() { diff --git a/src/Orchard/Extensions/ExtensionManager.cs b/src/Orchard/Extensions/ExtensionManager.cs index b265a6911..f9a031ec3 100644 --- a/src/Orchard/Extensions/ExtensionManager.cs +++ b/src/Orchard/Extensions/ExtensionManager.cs @@ -101,10 +101,10 @@ namespace Orchard.Extensions { return _activeExtensions; } - public IEnumerable GetExtensionsTopology() { + public ShellTopology GetExtensionsTopology() { var types = ActiveExtensions().SelectMany(x => x.ExportedTypes); types = types.Concat(typeof(IOrchardHost).Assembly.GetExportedTypes()); - return types.Where(t => t.IsClass && !t.IsAbstract); + return new ShellTopology { Types = types.Where(t => t.IsClass && !t.IsAbstract) }; } public void InstallExtension(string extensionType, HttpPostedFileBase extensionBundle) { diff --git a/src/Orchard/Extensions/IExtensionManager.cs b/src/Orchard/Extensions/IExtensionManager.cs index 6cf496c1b..2d6c5a3ca 100644 --- a/src/Orchard/Extensions/IExtensionManager.cs +++ b/src/Orchard/Extensions/IExtensionManager.cs @@ -1,12 +1,11 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Web; namespace Orchard.Extensions { public interface IExtensionManager { IEnumerable AvailableExtensions(); IEnumerable ActiveExtensions(); - IEnumerable GetExtensionsTopology(); + ShellTopology GetExtensionsTopology(); void InstallExtension(string extensionType, HttpPostedFileBase extensionBundle); void UninstallExtension(string extensionType, string extensionName); } diff --git a/src/Orchard/Extensions/ShellTopology.cs b/src/Orchard/Extensions/ShellTopology.cs new file mode 100644 index 000000000..eba9328db --- /dev/null +++ b/src/Orchard/Extensions/ShellTopology.cs @@ -0,0 +1,8 @@ +using System; +using System.Collections.Generic; + +namespace Orchard.Extensions { + public class ShellTopology { + public IEnumerable Types { get; set; } + } +} diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index 3a0fa6faf..e13daffff 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -176,6 +176,7 @@ +