From a2d215b6ae9d594d71a679a464c9c6a559efe862 Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Fri, 22 Feb 2013 19:24:50 -0500 Subject: added simple injector for dependancy management --- MediaBrowser.Controller/Kernel.cs | 46 ++++++++++++++++------ .../MediaBrowser.Controller.csproj | 6 ++- .../Resolvers/BaseResolutionIgnoreRule.cs | 12 ------ .../Resolvers/CoreResolutionIgnoreRule.cs | 6 +-- .../Resolvers/IResolutionIgnoreRule.cs | 12 ++++++ MediaBrowser.Controller/packages.config | 1 + 6 files changed, 56 insertions(+), 27 deletions(-) delete mode 100644 MediaBrowser.Controller/Resolvers/BaseResolutionIgnoreRule.cs create mode 100644 MediaBrowser.Controller/Resolvers/IResolutionIgnoreRule.cs (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index 952160b2b7..ea868ec454 100644 --- a/MediaBrowser.Controller/Kernel.cs +++ b/MediaBrowser.Controller/Kernel.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.IO; using MediaBrowser.Common.Kernel; +using MediaBrowser.Common.Localization; using MediaBrowser.Common.Plugins; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; @@ -27,6 +28,7 @@ using System.ComponentModel.Composition.Hosting; using System.Linq; using System.Threading; using System.Threading.Tasks; +using SimpleInjector; namespace MediaBrowser.Controller { @@ -178,25 +180,29 @@ namespace MediaBrowser.Controller get { return KernelContext.Server; } } + /// + /// Gets the list of Localized string files + /// + /// The string files. + [ImportMany(typeof(LocalizedStringData))] + public IEnumerable StringFiles { get; private set; } + /// /// Gets the list of plugin configuration pages /// /// The configuration pages. - [ImportMany(typeof(IPluginConfigurationPage))] public IEnumerable PluginConfigurationPages { get; private set; } /// /// Gets the intro providers. /// /// The intro providers. - [ImportMany(typeof(IIntroProvider))] public IEnumerable IntroProviders { get; private set; } /// /// Gets the list of currently registered weather prvoiders /// /// The weather providers. - [ImportMany(typeof(IWeatherProvider))] public IEnumerable WeatherProviders { get; private set; } /// @@ -232,7 +238,6 @@ namespace MediaBrowser.Controller /// Gets the list of available user repositories /// /// The user repositories. - [ImportMany(typeof(IUserRepository))] private IEnumerable UserRepositories { get; set; } /// @@ -251,7 +256,6 @@ namespace MediaBrowser.Controller /// Gets the list of available item repositories /// /// The item repositories. - [ImportMany(typeof(IItemRepository))] private IEnumerable ItemRepositories { get; set; } /// @@ -264,22 +268,19 @@ namespace MediaBrowser.Controller /// Gets the list of available item repositories /// /// The user data repositories. - [ImportMany(typeof(IUserDataRepository))] private IEnumerable UserDataRepositories { get; set; } /// /// Gets the list of available DisplayPreferencesRepositories /// /// The display preferences repositories. - [ImportMany(typeof(IDisplayPreferencesRepository))] private IEnumerable DisplayPreferencesRepositories { get; set; } /// /// Gets the list of entity resolution ignore rules /// /// The entity resolution ignore rules. - [ImportMany(typeof(BaseResolutionIgnoreRule))] - internal IEnumerable EntityResolutionIgnoreRules { get; private set; } + internal IEnumerable EntityResolutionIgnoreRules { get; private set; } /// /// Gets the active user data repository @@ -357,12 +358,35 @@ namespace MediaBrowser.Controller /// Composes the exported values. /// /// The container. - protected override void ComposeExportedValues(CompositionContainer container) + /// The _ioc container. + protected override void ComposeExportedValues(CompositionContainer container, Container iocContainer) { - base.ComposeExportedValues(container); + base.ComposeExportedValues(container, iocContainer); container.ComposeExportedValue("kernel", this); container.ComposeExportedValue("blurayExaminer", BlurayExaminer); + + iocContainer.RegisterSingle(this); + iocContainer.RegisterSingle(BlurayExaminer); + } + + /// + /// Composes the parts with ioc container. + /// + /// All types. + /// The container. + protected override void ComposePartsWithIocContainer(Type[] allTypes, Container container) + { + base.ComposePartsWithIocContainer(allTypes, container); + + EntityResolutionIgnoreRules = GetExports(allTypes); + UserDataRepositories = GetExports(allTypes); + UserRepositories = GetExports(allTypes); + DisplayPreferencesRepositories = GetExports(allTypes); + ItemRepositories = GetExports(allTypes); + WeatherProviders = GetExports(allTypes); + IntroProviders = GetExports(allTypes); + PluginConfigurationPages = GetExports(allTypes); } /// diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 3978e6e397..f962427cdd 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -63,6 +63,10 @@ False ..\packages\protobuf-net.2.0.0.621\lib\net40\protobuf-net.dll + + False + ..\packages\SimpleInjector.2.0.0-beta5\lib\net40-client\SimpleInjector.dll + @@ -165,7 +169,7 @@ - + diff --git a/MediaBrowser.Controller/Resolvers/BaseResolutionIgnoreRule.cs b/MediaBrowser.Controller/Resolvers/BaseResolutionIgnoreRule.cs deleted file mode 100644 index 45effc4da1..0000000000 --- a/MediaBrowser.Controller/Resolvers/BaseResolutionIgnoreRule.cs +++ /dev/null @@ -1,12 +0,0 @@ -using MediaBrowser.Controller.Library; - -namespace MediaBrowser.Controller.Resolvers -{ - /// - /// Provides a base "rule" that anyone can use to have paths ignored by the resolver - /// - public abstract class BaseResolutionIgnoreRule - { - public abstract bool ShouldIgnore(ItemResolveArgs args); - } -} diff --git a/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs b/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs index 2d69f8deff..d237f68f32 100644 --- a/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs +++ b/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs @@ -9,8 +9,8 @@ namespace MediaBrowser.Controller.Resolvers /// /// Provides the core resolver ignore rules /// - [Export(typeof(BaseResolutionIgnoreRule))] - public class CoreResolutionIgnoreRule : BaseResolutionIgnoreRule + [Export(typeof(IResolutionIgnoreRule))] + public class CoreResolutionIgnoreRule : IResolutionIgnoreRule { /// /// Any folder named in this list will be ignored - can be added to at runtime for extensibility @@ -27,7 +27,7 @@ namespace MediaBrowser.Controller.Resolvers "extrafanart" }; - public override bool ShouldIgnore(ItemResolveArgs args) + public bool ShouldIgnore(ItemResolveArgs args) { // Ignore hidden files and folders if (args.IsHidden) diff --git a/MediaBrowser.Controller/Resolvers/IResolutionIgnoreRule.cs b/MediaBrowser.Controller/Resolvers/IResolutionIgnoreRule.cs new file mode 100644 index 0000000000..661688f3c7 --- /dev/null +++ b/MediaBrowser.Controller/Resolvers/IResolutionIgnoreRule.cs @@ -0,0 +1,12 @@ +using MediaBrowser.Controller.Library; + +namespace MediaBrowser.Controller.Resolvers +{ + /// + /// Provides a base "rule" that anyone can use to have paths ignored by the resolver + /// + public interface IResolutionIgnoreRule + { + bool ShouldIgnore(ItemResolveArgs args); + } +} diff --git a/MediaBrowser.Controller/packages.config b/MediaBrowser.Controller/packages.config index e3e4367b73..6fd19eed96 100644 --- a/MediaBrowser.Controller/packages.config +++ b/MediaBrowser.Controller/packages.config @@ -2,4 +2,5 @@ + \ No newline at end of file -- cgit v1.2.3