From 5ea422c11b66297949476db6e80cfa42df6de666 Mon Sep 17 00:00:00 2001 From: Suha Can Date: Fri, 16 Apr 2010 16:15:23 -0700 Subject: [PATCH] - Adding Feature model and refactoring ExtensionManager to return it instead of Types array from LoadFeature(). - Updating tests. --HG-- branch : dev --- .../Environment/DefaultOrchardHostTests.cs | 3 ++- .../ShellBuilders/DefaultShellContainerFactoryTests.cs | 1 + src/Orchard.Tests/Extensions/ExtensionManagerTests.cs | 5 +++-- .../Mvc/Routes/StandardExtensionRouteProviderTests.cs | 3 ++- .../Environment/Topology/Models/ShellTopology.cs | 1 + src/Orchard/Extensions/ExtensionDescriptor.cs | 1 + src/Orchard/Extensions/ExtensionManager.cs | 9 +++++++-- src/Orchard/Extensions/IExtensionManager.cs | 6 +++--- src/Orchard/Extensions/Models/Feature.cs | 10 ++++++++++ .../Extensions/{ => Models}/FeatureDescriptor.cs | 2 +- src/Orchard/Orchard.Framework.csproj | 3 ++- 11 files changed, 33 insertions(+), 11 deletions(-) create mode 100644 src/Orchard/Extensions/Models/Feature.cs rename src/Orchard/Extensions/{ => Models}/FeatureDescriptor.cs (84%) diff --git a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs index 3f1d04a98..894f367f8 100644 --- a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs +++ b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs @@ -20,6 +20,7 @@ using Orchard.Mvc.Routes; using Orchard.Extensions; using Orchard.Tests.Environment.TestDependencies; using Orchard.Tests.Stubs; +using Orchard.Extensions.Models; namespace Orchard.Tests.Environment { [TestFixture] @@ -86,7 +87,7 @@ namespace Orchard.Tests.Environment { throw new NotImplementedException(); } - public IEnumerable LoadFeature(string featureName) { + public Feature LoadFeature(string featureName) { throw new NotImplementedException(); } diff --git a/src/Orchard.Tests/Environment/ShellBuilders/DefaultShellContainerFactoryTests.cs b/src/Orchard.Tests/Environment/ShellBuilders/DefaultShellContainerFactoryTests.cs index 4ba58cf65..930963c97 100644 --- a/src/Orchard.Tests/Environment/ShellBuilders/DefaultShellContainerFactoryTests.cs +++ b/src/Orchard.Tests/Environment/ShellBuilders/DefaultShellContainerFactoryTests.cs @@ -15,6 +15,7 @@ using Orchard.Environment.Configuration; using Orchard.Environment.ShellBuilders; using Orchard.Environment.Topology.Models; using Orchard.Extensions; +using Orchard.Extensions.Models; namespace Orchard.Tests.Environment.ShellBuilders { [TestFixture] diff --git a/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs b/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs index 90b562569..4f09eb3e0 100644 --- a/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs +++ b/src/Orchard.Tests/Extensions/ExtensionManagerTests.cs @@ -7,6 +7,7 @@ using Orchard.Extensions; using Orchard.Extensions.Loaders; using Orchard.Tests.Extensions.ExtensionTypes; using Yaml.Grammar; +using Orchard.Extensions.Models; namespace Orchard.Tests.Extensions { [TestFixture] @@ -252,7 +253,7 @@ features: ExtensionManager extensionManager = new ExtensionManager(new []{extensionFolder}, new [] {extensionLoader}); - foreach (var type in extensionManager.LoadFeature("TestFeature")) { + foreach (var type in extensionManager.LoadFeature("TestFeature").Types) { Assert.That(type == typeof(Phi)); } } @@ -275,7 +276,7 @@ features: ExtensionManager extensionManager = new ExtensionManager(new[] { extensionFolder }, new[] { extensionLoader }); - foreach (var type in extensionManager.LoadFeature("TestModule")) { + foreach (var type in extensionManager.LoadFeature("TestModule").Types) { Assert.That(type != typeof(Phi)); Assert.That((type == typeof(Alpha) || (type == typeof(Beta)))); } diff --git a/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs b/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs index 06c5a9222..dcd1f1233 100644 --- a/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs +++ b/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs @@ -6,6 +6,7 @@ using System.Web.Routing; using NUnit.Framework; using Orchard.Mvc.Routes; using Orchard.Extensions; +using Orchard.Extensions.Models; namespace Orchard.Tests.Mvc.Routes { [TestFixture] @@ -58,7 +59,7 @@ namespace Orchard.Tests.Mvc.Routes { throw new NotImplementedException(); } - public IEnumerable LoadFeature(string featureName) { + public Feature LoadFeature(string featureName) { throw new NotImplementedException(); } diff --git a/src/Orchard/Environment/Topology/Models/ShellTopology.cs b/src/Orchard/Environment/Topology/Models/ShellTopology.cs index 562876c29..57e0bbcfa 100644 --- a/src/Orchard/Environment/Topology/Models/ShellTopology.cs +++ b/src/Orchard/Environment/Topology/Models/ShellTopology.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using Orchard.Environment.Configuration; using Orchard.Extensions; +using Orchard.Extensions.Models; namespace Orchard.Environment.Topology.Models { public class ShellTopology { diff --git a/src/Orchard/Extensions/ExtensionDescriptor.cs b/src/Orchard/Extensions/ExtensionDescriptor.cs index d5b960d9b..7c5988498 100644 --- a/src/Orchard/Extensions/ExtensionDescriptor.cs +++ b/src/Orchard/Extensions/ExtensionDescriptor.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Orchard.Extensions.Models; namespace Orchard.Extensions { public class ExtensionDescriptor { diff --git a/src/Orchard/Extensions/ExtensionManager.cs b/src/Orchard/Extensions/ExtensionManager.cs index 0cc6cb3c6..6658e5e38 100644 --- a/src/Orchard/Extensions/ExtensionManager.cs +++ b/src/Orchard/Extensions/ExtensionManager.cs @@ -6,6 +6,7 @@ using ICSharpCode.SharpZipLib.Zip; using Orchard.Environment; using Orchard.Extensions.Helpers; using Orchard.Extensions.Loaders; +using Orchard.Extensions.Models; using Orchard.Localization; using Orchard.Logging; using Yaml.Grammar; @@ -109,7 +110,7 @@ namespace Orchard.Extensions { return new ShellTopology_Obsolete { Types = types.Where(t => t.IsClass && !t.IsAbstract) }; } - public IEnumerable LoadFeature(string featureName) { + public Feature LoadFeature(string featureName) { string extensionName = GetExtensionForFeature(featureName); if (extensionName == null) throw new ArgumentException(T("Feature ") + featureName + T(" was not found in any of the installed extensions")); var extension = ActiveExtensions().Where(x => x.Descriptor.Name == extensionName).FirstOrDefault(); @@ -125,7 +126,11 @@ namespace Orchard.Extensions { } } - return featureTypes; + return new Feature { + ExtensionName = extensionName, + Name = featureName, + Types = featureTypes + }; } private static string GetSourceFeatureNameForType(Type type, string extensionName) { diff --git a/src/Orchard/Extensions/IExtensionManager.cs b/src/Orchard/Extensions/IExtensionManager.cs index bb138709d..fff9181c2 100644 --- a/src/Orchard/Extensions/IExtensionManager.cs +++ b/src/Orchard/Extensions/IExtensionManager.cs @@ -1,13 +1,13 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Web; +using Orchard.Extensions.Models; namespace Orchard.Extensions { public interface IExtensionManager { IEnumerable AvailableExtensions(); IEnumerable ActiveExtensions(); ShellTopology_Obsolete GetExtensionsTopology(); - IEnumerable LoadFeature(string featureName); + Feature LoadFeature(string featureName); void InstallExtension(string extensionType, HttpPostedFileBase extensionBundle); void UninstallExtension(string extensionType, string extensionName); } diff --git a/src/Orchard/Extensions/Models/Feature.cs b/src/Orchard/Extensions/Models/Feature.cs new file mode 100644 index 000000000..a0e0ed146 --- /dev/null +++ b/src/Orchard/Extensions/Models/Feature.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; + +namespace Orchard.Extensions.Models { + public class Feature { + public string ExtensionName { get; set; } + public string Name { get; set; } + public IEnumerable Types { get; set; } + } +} diff --git a/src/Orchard/Extensions/FeatureDescriptor.cs b/src/Orchard/Extensions/Models/FeatureDescriptor.cs similarity index 84% rename from src/Orchard/Extensions/FeatureDescriptor.cs rename to src/Orchard/Extensions/Models/FeatureDescriptor.cs index c45bed460..783642af9 100644 --- a/src/Orchard/Extensions/FeatureDescriptor.cs +++ b/src/Orchard/Extensions/Models/FeatureDescriptor.cs @@ -1,4 +1,4 @@ -namespace Orchard.Extensions { +namespace Orchard.Extensions.Models { public class FeatureDescriptor { public string ExtensionName { get; set; } public string Name { get; set; } diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index 930131333..639085b6f 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -189,8 +189,9 @@ - + +