- ShellTopology to be returned from ExtensionsManager. It contains types from active extensions.

- Modifying some unit tests accordingly.

--HG--
branch : dev
This commit is contained in:
Suha Can
2010-04-07 18:01:15 -07:00
parent 26add78779
commit 0e3352c560
8 changed files with 19 additions and 11 deletions

View File

@@ -77,7 +77,7 @@ namespace Orchard.Tests.Environment {
return Enumerable.Empty<ExtensionEntry>();
}
public IEnumerable<Type> GetExtensionsTopology() {
public ShellTopology GetExtensionsTopology() {
throw new NotImplementedException();
}

View File

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

View File

@@ -54,7 +54,7 @@ namespace Orchard.Tests.Mvc.Routes {
};
}
public IEnumerable<Type> GetExtensionsTopology() {
public ShellTopology GetExtensionsTopology() {
throw new NotImplementedException();
}

View File

@@ -31,11 +31,11 @@ namespace Orchard.Environment {
}
public IEnumerable<Type> GetModuleTypes() {
return _extensionManager.GetExtensionsTopology().Where(t => typeof(IModule).IsAssignableFrom(t));
return _extensionManager.GetExtensionsTopology().Types.Where(t => typeof(IModule).IsAssignableFrom(t));
}
public IEnumerable<Type> GetDependencyTypes() {
return _extensionManager.GetExtensionsTopology().Where(t => typeof(IDependency).IsAssignableFrom(t));
return _extensionManager.GetExtensionsTopology().Types.Where(t => typeof(IDependency).IsAssignableFrom(t));
}
public IEnumerable<RecordDescriptor> GetRecordDescriptors() {

View File

@@ -101,10 +101,10 @@ namespace Orchard.Extensions {
return _activeExtensions;
}
public IEnumerable<Type> 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) {

View File

@@ -1,12 +1,11 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Web;
namespace Orchard.Extensions {
public interface IExtensionManager {
IEnumerable<ExtensionDescriptor> AvailableExtensions();
IEnumerable<ExtensionEntry> ActiveExtensions();
IEnumerable<Type> GetExtensionsTopology();
ShellTopology GetExtensionsTopology();
void InstallExtension(string extensionType, HttpPostedFileBase extensionBundle);
void UninstallExtension(string extensionType, string extensionName);
}

View File

@@ -0,0 +1,8 @@
using System;
using System.Collections.Generic;
namespace Orchard.Extensions {
public class ShellTopology {
public IEnumerable<Type> Types { get; set; }
}
}

View File

@@ -176,6 +176,7 @@
<Compile Include="Extensions\FeatureDescriptor.cs" />
<Compile Include="Extensions\Loaders\AreaExtensionLoader.cs" />
<Compile Include="Extensions\Records\ExtensionRecord.cs" />
<Compile Include="Extensions\ShellTopology.cs" />
<Compile Include="Mvc\AntiForgery\ValidateAntiForgeryTokenOrchardAttribute.cs" />
<Compile Include="Mvc\FollowReturnUrl\FollowReturnUrlFilter.cs" />
<Compile Include="Mvc\Html\FileRegistrationContextExtensions.cs" />