From 2fd8d17be9ac00f3309e5d552939bb0c5177a1f0 Mon Sep 17 00:00:00 2001 From: "shannon@ShandemVaio" Date: Tue, 31 Jul 2012 03:14:24 +0600 Subject: [PATCH] Changed Action over to use PluginTypeResolver to find IActions and added unit test for it. --- src/Umbraco.Tests/PluginTypeResolverTests.cs | 11 +++++++++-- src/umbraco.cms/Actions/Action.cs | 14 +++++++------- src/umbraco.cms/PluginTypeResolverExtensions.cs | 12 +++++++++++- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Tests/PluginTypeResolverTests.cs b/src/Umbraco.Tests/PluginTypeResolverTests.cs index d68abb26ef..ffb4039f39 100644 --- a/src/Umbraco.Tests/PluginTypeResolverTests.cs +++ b/src/Umbraco.Tests/PluginTypeResolverTests.cs @@ -78,6 +78,13 @@ namespace Umbraco.Tests Assert.AreEqual(26, trees.Count()); } + [Test] + public void Resolves_Actions() + { + var actions = PluginTypeResolver.Current.ResolveActions(); + Assert.AreEqual(36, actions.Count()); + } + [Test] public void Resolves_Trees() { @@ -93,9 +100,9 @@ namespace Umbraco.Tests } [Test] - public void Resolves_Actions() + public void Resolves_Action_Handlers() { - var types = PluginTypeResolver.Current.ResolveActions(); + var types = PluginTypeResolver.Current.ResolveActionHandlers(); Assert.AreEqual(1, types.Count()); } diff --git a/src/umbraco.cms/Actions/Action.cs b/src/umbraco.cms/Actions/Action.cs index 0622709b3b..43288279c2 100644 --- a/src/umbraco.cms/Actions/Action.cs +++ b/src/umbraco.cms/Actions/Action.cs @@ -66,7 +66,7 @@ namespace umbraco.BusinessLogic.Actions { ActionHandlers.AddRange( PluginTypeResolver.Current.CreateInstances( - PluginTypeResolver.Current.ResolveActions())); + PluginTypeResolver.Current.ResolveActionHandlers())); } } @@ -79,16 +79,16 @@ namespace umbraco.BusinessLogic.Actions if (Actions.Count == 0) { - var foundIActions = TypeFinder.FindClassesOfType(); + var foundIActions = PluginTypeResolver.Current.ResolveActions(); foreach (var type in foundIActions) { IAction typeInstance; - PropertyInfo instance = type.GetProperty("Instance", BindingFlags.Public | BindingFlags.Static); + var instance = type.GetProperty("Instance", BindingFlags.Public | BindingFlags.Static); //if the singletone initializer is not found, try simply creating an instance of the IAction if it supports public constructors - if (instance == null) - typeInstance = Activator.CreateInstance(type) as IAction; - else - typeInstance = instance.GetValue(null, null) as IAction; + if (instance == null) + typeInstance = PluginTypeResolver.Current.CreateInstance(type); + else + typeInstance = instance.GetValue(null, null) as IAction; if (typeInstance != null) { diff --git a/src/umbraco.cms/PluginTypeResolverExtensions.cs b/src/umbraco.cms/PluginTypeResolverExtensions.cs index 3588a855dc..a70e200363 100644 --- a/src/umbraco.cms/PluginTypeResolverExtensions.cs +++ b/src/umbraco.cms/PluginTypeResolverExtensions.cs @@ -20,11 +20,21 @@ namespace umbraco.cms /// /// /// - internal static IEnumerable ResolveActions(this PluginTypeResolver resolver) + internal static IEnumerable ResolveActionHandlers(this PluginTypeResolver resolver) { return resolver.ResolveTypes(); } + /// + /// Returns all available IActions in application + /// + /// + /// + internal static IEnumerable ResolveActions(this PluginTypeResolver resolver) + { + return resolver.ResolveTypes(); + } + /// /// Returns all available IDataType in application ///