diff --git a/src/Orchard.Core.Tests/Orchard.Core.Tests.csproj b/src/Orchard.Core.Tests/Orchard.Core.Tests.csproj index 182b871f2..1852e93e0 100644 --- a/src/Orchard.Core.Tests/Orchard.Core.Tests.csproj +++ b/src/Orchard.Core.Tests/Orchard.Core.Tests.csproj @@ -89,17 +89,17 @@ {6CB3EB30-F725-45C0-9742-42599BA8E8D2} Orchard.Tests.Modules - + {ABC826D4-2FA1-4F2F-87DE-E6095F653810} - Orchard.Tests + Orchard.Framework.Tests {9916839C-39FC-4CEB-A5AF-89CA7E87119F} Orchard.Core - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework diff --git a/src/Orchard.Tests.Modules/Orchard.Tests.Modules.csproj b/src/Orchard.Tests.Modules/Orchard.Tests.Modules.csproj index d4e6497dd..d68822ba7 100644 --- a/src/Orchard.Tests.Modules/Orchard.Tests.Modules.csproj +++ b/src/Orchard.Tests.Modules/Orchard.Tests.Modules.csproj @@ -98,9 +98,9 @@ - + {ABC826D4-2FA1-4F2F-87DE-E6095F653810} - Orchard.Tests + Orchard.Framework.Tests {9916839C-39FC-4CEB-A5AF-89CA7E87119F} @@ -122,9 +122,9 @@ {79AED36E-ABD0-4747-93D3-8722B042454B} Orchard.Users - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework diff --git a/src/Orchard.Tests/App.config b/src/Orchard.Tests/App.config index 7757697ed..5a9770697 100644 --- a/src/Orchard.Tests/App.config +++ b/src/Orchard.Tests/App.config @@ -4,7 +4,7 @@ - + diff --git a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs index 3e201b0ec..f3b18cabe 100644 --- a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs +++ b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs @@ -77,6 +77,10 @@ namespace Orchard.Tests.Environment { return Enumerable.Empty(); } + public IEnumerable GetExtensionsTopology() { + throw new NotImplementedException(); + } + public void InstallExtension(string extensionType, HttpPostedFileBase extensionBundle) { throw new NotImplementedException(); } diff --git a/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs b/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs index 36de9f64e..b16bf13f1 100644 --- a/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs +++ b/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs @@ -16,7 +16,6 @@ namespace Orchard.Tests.Extensions { public void Init() { var builder = new ContainerBuilder(); _folders = new StubFolders(); - //builder.RegisterModule(new ImplicitCollectionSupportModule()); builder.RegisterInstance(_folders).As(); builder.RegisterType().As(); _container = builder.Build(); @@ -175,5 +174,21 @@ features: } } + [Test] + public void ExtensionManagerShouldReturnTopology() { + var topology = _manager.GetExtensionsTopology(); + + Assert.That(topology.Count(), Is.Not.EqualTo(0)); + } + + [Test] + public void ExtensionManagerTopologyShouldContainNonAbstractClasses() { + var topology = _manager.GetExtensionsTopology(); + + foreach (var type in topology) { + Assert.That(type.IsClass); + Assert.That(!type.IsAbstract); + } + } } } diff --git a/src/Orchard.Tests/Mvc/OrchardControllerIdentificationStrategyTests.cs b/src/Orchard.Tests/Mvc/OrchardControllerIdentificationStrategyTests.cs index f00bf84f1..f92370cbf 100644 --- a/src/Orchard.Tests/Mvc/OrchardControllerIdentificationStrategyTests.cs +++ b/src/Orchard.Tests/Mvc/OrchardControllerIdentificationStrategyTests.cs @@ -12,7 +12,7 @@ namespace Orchard.Tests.Mvc { var strategy = new OrchardControllerIdentificationStrategy(Enumerable.Empty()); var service = strategy.ServiceForControllerType(typeof (StrategyTestingController)); Assert.That(service, Is.TypeOf()); - Assert.That(((NamedService)service).ServiceName, Is.EqualTo("controller.orchard.tests.strategytesting")); + Assert.That(((NamedService)service).ServiceName, Is.EqualTo("controller.orchard.framework.tests.strategytesting")); } } diff --git a/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs b/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs index 0a9083bcf..0ce1436e8 100644 --- a/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs +++ b/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs @@ -54,6 +54,10 @@ namespace Orchard.Tests.Mvc.Routes { }; } + public IEnumerable GetExtensionsTopology() { + throw new NotImplementedException(); + } + public void InstallExtension(string extensionType, HttpPostedFileBase extensionBundle) { throw new NotImplementedException(); } diff --git a/src/Orchard.Tests/Orchard.Tests.csproj b/src/Orchard.Tests/Orchard.Framework.Tests.csproj similarity index 96% rename from src/Orchard.Tests/Orchard.Tests.csproj rename to src/Orchard.Tests/Orchard.Framework.Tests.csproj index f6d2ae1f6..bdb92ad32 100644 --- a/src/Orchard.Tests/Orchard.Tests.csproj +++ b/src/Orchard.Tests/Orchard.Framework.Tests.csproj @@ -9,7 +9,7 @@ Library Properties Orchard.Tests - Orchard.Tests + Orchard.Framework.Tests v3.5 512 @@ -194,9 +194,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework diff --git a/src/Orchard.Tests/Properties/AssemblyInfo.cs b/src/Orchard.Tests/Properties/AssemblyInfo.cs index 2e6795c4b..472097fe0 100644 --- a/src/Orchard.Tests/Properties/AssemblyInfo.cs +++ b/src/Orchard.Tests/Properties/AssemblyInfo.cs @@ -5,7 +5,7 @@ using System.Runtime.InteropServices; // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("Orchard.Tests")] +[assembly: AssemblyTitle("Orchard.Framework.Tests")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyProduct("Orchard")] diff --git a/src/Orchard.Web.Tests/Orchard.Web.Tests.csproj b/src/Orchard.Web.Tests/Orchard.Web.Tests.csproj index b0f946d50..96c8dcc76 100644 --- a/src/Orchard.Web.Tests/Orchard.Web.Tests.csproj +++ b/src/Orchard.Web.Tests/Orchard.Web.Tests.csproj @@ -70,9 +70,9 @@ {50B779EA-EC00-4699-84C0-03B395C365D2} Orchard.Web - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework diff --git a/src/Orchard.Web/Core/Orchard.Core.csproj b/src/Orchard.Web/Core/Orchard.Core.csproj index 6ff844442..de8618295 100644 --- a/src/Orchard.Web/Core/Orchard.Core.csproj +++ b/src/Orchard.Web/Core/Orchard.Core.csproj @@ -178,9 +178,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework diff --git a/src/Orchard.Web/Modules/Futures.Widgets/Futures.Widgets.csproj b/src/Orchard.Web/Modules/Futures.Widgets/Futures.Widgets.csproj index 547e232f9..ae690553d 100644 --- a/src/Orchard.Web/Modules/Futures.Widgets/Futures.Widgets.csproj +++ b/src/Orchard.Web/Modules/Futures.Widgets/Futures.Widgets.csproj @@ -76,9 +76,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework {9916839C-39FC-4CEB-A5AF-89CA7E87119F} diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj b/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj index 55c124d49..17ef187bc 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj @@ -169,9 +169,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework {9916839C-39FC-4CEB-A5AF-89CA7E87119F} diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj b/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj index 0d1bf2b8c..065c4ae21 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj +++ b/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj @@ -117,9 +117,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework {9916839C-39FC-4CEB-A5AF-89CA7E87119F} diff --git a/src/Orchard.Web/Modules/Orchard.DevTools/Orchard.DevTools.csproj b/src/Orchard.Web/Modules/Orchard.DevTools/Orchard.DevTools.csproj index 1669241cf..068425dae 100644 --- a/src/Orchard.Web/Modules/Orchard.DevTools/Orchard.DevTools.csproj +++ b/src/Orchard.Web/Modules/Orchard.DevTools/Orchard.DevTools.csproj @@ -90,9 +90,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework diff --git a/src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj b/src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj index 220e76705..45ab37910 100644 --- a/src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj +++ b/src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj @@ -101,9 +101,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework {9916839C-39FC-4CEB-A5AF-89CA7E87119F} diff --git a/src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj b/src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj index 05dd70c26..ceb8dba5b 100644 --- a/src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj +++ b/src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj @@ -131,9 +131,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework {9916839C-39FC-4CEB-A5AF-89CA7E87119F} diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj b/src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj index b8668dce3..6a8458af7 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj +++ b/src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj @@ -94,9 +94,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework diff --git a/src/Orchard.Web/Modules/Orchard.Sandbox/Orchard.Sandbox.csproj b/src/Orchard.Web/Modules/Orchard.Sandbox/Orchard.Sandbox.csproj index 99d1f9d7f..a242235e5 100644 --- a/src/Orchard.Web/Modules/Orchard.Sandbox/Orchard.Sandbox.csproj +++ b/src/Orchard.Web/Modules/Orchard.Sandbox/Orchard.Sandbox.csproj @@ -89,9 +89,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework {9916839C-39FC-4CEB-A5AF-89CA7E87119F} diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Orchard.Setup.csproj b/src/Orchard.Web/Modules/Orchard.Setup/Orchard.Setup.csproj index dfd2fa3dd..8fc6e930e 100644 --- a/src/Orchard.Web/Modules/Orchard.Setup/Orchard.Setup.csproj +++ b/src/Orchard.Web/Modules/Orchard.Setup/Orchard.Setup.csproj @@ -73,9 +73,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework {9916839C-39FC-4CEB-A5AF-89CA7E87119F} diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj b/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj index 308837506..872089915 100644 --- a/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj +++ b/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj @@ -97,9 +97,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework diff --git a/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj b/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj index 1fd7b2750..093f9c70b 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj +++ b/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj @@ -94,9 +94,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework diff --git a/src/Orchard.Web/Modules/TinyMce/TinyMce.csproj b/src/Orchard.Web/Modules/TinyMce/TinyMce.csproj index d20a7f730..f2648d7c6 100644 --- a/src/Orchard.Web/Modules/TinyMce/TinyMce.csproj +++ b/src/Orchard.Web/Modules/TinyMce/TinyMce.csproj @@ -129,9 +129,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework {9916839C-39FC-4CEB-A5AF-89CA7E87119F} diff --git a/src/Orchard.Web/Orchard.Web.csproj b/src/Orchard.Web/Orchard.Web.csproj index dff35c978..743a29cca 100644 --- a/src/Orchard.Web/Orchard.Web.csproj +++ b/src/Orchard.Web/Orchard.Web.csproj @@ -98,9 +98,9 @@ - + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard + Orchard.Framework {9916839C-39FC-4CEB-A5AF-89CA7E87119F} diff --git a/src/Orchard.sln b/src/Orchard.sln index 50a95b84b..f84a3e496 100644 --- a/src/Orchard.sln +++ b/src/Orchard.sln @@ -3,9 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Web", "Orchard.Web\Orchard.Web.csproj", "{50B779EA-EC00-4699-84C0-03B395C365D2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard", "Orchard\Orchard.csproj", "{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Framework", "Orchard\Orchard.Framework.csproj", "{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Tests", "Orchard.Tests\Orchard.Tests.csproj", "{ABC826D4-2FA1-4F2F-87DE-E6095F653810}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Framework.Tests", "Orchard.Tests\Orchard.Framework.Tests.csproj", "{ABC826D4-2FA1-4F2F-87DE-E6095F653810}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Web.Tests", "Orchard.Web.Tests\Orchard.Web.Tests.csproj", "{F112851D-B023-4746-B6B1-8D2E5AD8F7AA}" EndProject diff --git a/src/Orchard/Environment/DefaultCompositionStrategy.cs b/src/Orchard/Environment/DefaultCompositionStrategy.cs index bcac9279c..c36de5e0f 100644 --- a/src/Orchard/Environment/DefaultCompositionStrategy.cs +++ b/src/Orchard/Environment/DefaultCompositionStrategy.cs @@ -30,19 +30,11 @@ namespace Orchard.Environment { } public IEnumerable GetModuleTypes() { - var types = _extensionManager.ActiveExtensions().SelectMany(x => x.ExportedTypes); - types = types.Concat(typeof(IOrchardHost).Assembly.GetExportedTypes()); - var nonAbstractClasses = types.Where(t => t.IsClass && !t.IsAbstract); - var modules = nonAbstractClasses.Where(t => typeof(IModule).IsAssignableFrom(t)); - return modules; + return _extensionManager.GetExtensionsTopology().Where(t => typeof(IModule).IsAssignableFrom(t)); } public IEnumerable GetDependencyTypes() { - var types = _extensionManager.ActiveExtensions().SelectMany(x => x.ExportedTypes); - types = types.Concat(typeof(IOrchardHost).Assembly.GetExportedTypes()); - var nonAbstractClasses = types.Where(t => t.IsClass && !t.IsAbstract); - var modules = nonAbstractClasses.Where(t => typeof(IDependency).IsAssignableFrom(t)); - return modules; + return _extensionManager.GetExtensionsTopology().Where(t => typeof(IDependency).IsAssignableFrom(t)); } public IEnumerable GetRecordDescriptors() { diff --git a/src/Orchard/Extensions/ExtensionManager.cs b/src/Orchard/Extensions/ExtensionManager.cs index 16c9f9d55..e6331cb54 100644 --- a/src/Orchard/Extensions/ExtensionManager.cs +++ b/src/Orchard/Extensions/ExtensionManager.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using ICSharpCode.SharpZipLib.Zip; +using Orchard.Environment; using Orchard.Extensions.Helpers; using Orchard.Extensions.Loaders; using Orchard.Localization; @@ -96,6 +97,12 @@ namespace Orchard.Extensions { return _activeExtensions; } + public IEnumerable GetExtensionsTopology() { + var types = ActiveExtensions().SelectMany(x => x.ExportedTypes); + types = types.Concat(typeof(IOrchardHost).Assembly.GetExportedTypes()); + return types.Where(t => t.IsClass && !t.IsAbstract); + } + public void InstallExtension(string extensionType, HttpPostedFileBase extensionBundle) { if (String.IsNullOrEmpty(extensionType)) { throw new ArgumentException(T("extensionType was null or empty").ToString()); diff --git a/src/Orchard/Extensions/IExtensionManager.cs b/src/Orchard/Extensions/IExtensionManager.cs index fb6199f2d..6cf496c1b 100644 --- a/src/Orchard/Extensions/IExtensionManager.cs +++ b/src/Orchard/Extensions/IExtensionManager.cs @@ -1,10 +1,12 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Web; namespace Orchard.Extensions { public interface IExtensionManager { IEnumerable AvailableExtensions(); IEnumerable ActiveExtensions(); + IEnumerable GetExtensionsTopology(); void InstallExtension(string extensionType, HttpPostedFileBase extensionBundle); void UninstallExtension(string extensionType, string extensionName); } diff --git a/src/Orchard/Orchard.csproj b/src/Orchard/Orchard.Framework.csproj similarity index 98% rename from src/Orchard/Orchard.csproj rename to src/Orchard/Orchard.Framework.csproj index c80cc21dc..70061f8f5 100644 --- a/src/Orchard/Orchard.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -9,7 +9,7 @@ Library Properties Orchard - Orchard + Orchard.Framework v3.5 512 diff --git a/src/Orchard/Properties/AssemblyInfo.cs b/src/Orchard/Properties/AssemblyInfo.cs index d9b719e1f..09429c973 100644 --- a/src/Orchard/Properties/AssemblyInfo.cs +++ b/src/Orchard/Properties/AssemblyInfo.cs @@ -5,7 +5,7 @@ using System.Runtime.InteropServices; // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("Orchard")] +[assembly: AssemblyTitle("Orchard.Framework")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyProduct("Orchard")]