aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/EnvironmentService.cs5
-rw-r--r--MediaBrowser.Api/HttpHandlers/PlaybackCheckInHandler.cs2
-rw-r--r--MediaBrowser.Api/HttpHandlers/UpdateMediaLibraryHandler.cs6
-rw-r--r--MediaBrowser.Api/Images/ImageService.cs2
-rw-r--r--MediaBrowser.Api/Images/UploadImageHandler.cs2
-rw-r--r--MediaBrowser.Api/LibraryService.cs2
-rw-r--r--MediaBrowser.Api/LocalizationService.cs2
-rw-r--r--MediaBrowser.Api/MediaBrowser.Api.csproj1
-rw-r--r--MediaBrowser.Api/PackageService.cs2
-rw-r--r--MediaBrowser.Api/Plugin.cs2
-rw-r--r--MediaBrowser.Api/PluginService.cs3
-rw-r--r--MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs27
-rw-r--r--MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs18
-rw-r--r--MediaBrowser.Api/Streaming/AudioHandler.cs2
-rw-r--r--MediaBrowser.Api/Streaming/BaseStreamingHandler.cs10
-rw-r--r--MediaBrowser.Api/Streaming/HlsAudioPlaylistHandler.cs2
-rw-r--r--MediaBrowser.Api/Streaming/HlsSegmentHandler.cs2
-rw-r--r--MediaBrowser.Api/Streaming/HlsVideoPlaylistHandler.cs2
-rw-r--r--MediaBrowser.Api/Streaming/VideoHandler.cs8
-rw-r--r--MediaBrowser.Api/SystemService.cs2
-rw-r--r--MediaBrowser.Api/UserLibrary/GenresService.cs2
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs2
-rw-r--r--MediaBrowser.Api/UserLibrary/PersonsService.cs2
-rw-r--r--MediaBrowser.Api/UserLibrary/StudiosService.cs5
-rw-r--r--MediaBrowser.Api/UserLibrary/UserLibraryService.cs2
-rw-r--r--MediaBrowser.Api/UserLibrary/YearsService.cs2
-rw-r--r--MediaBrowser.Api/UserService.cs2
-rw-r--r--MediaBrowser.Api/WeatherService.cs2
-rw-r--r--MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs5
-rw-r--r--MediaBrowser.Api/WebSocket/SystemInfoWebSocketListener.cs5
-rw-r--r--MediaBrowser.ApiInteraction.Javascript/JavascriptApiClientService.cs2
-rw-r--r--MediaBrowser.ApiInteraction.Javascript/MediaBrowser.ApiInteraction.Javascript.csproj1
-rw-r--r--MediaBrowser.Common/Kernel/BaseKernel.cs115
-rw-r--r--MediaBrowser.Common/Kernel/IApplicationHost.cs9
-rw-r--r--MediaBrowser.Common/Kernel/IKernel.cs20
-rw-r--r--MediaBrowser.Common/MediaBrowser.Common.csproj5
-rw-r--r--MediaBrowser.Common/Net/HttpServer.cs22
-rw-r--r--MediaBrowser.Common/Net/IUdpServer.cs7
-rw-r--r--MediaBrowser.Common/ScheduledTasks/BaseScheduledTask.cs75
-rw-r--r--MediaBrowser.Common/ScheduledTasks/BaseTaskTrigger.cs4
-rw-r--r--MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs3
-rw-r--r--MediaBrowser.Common/ScheduledTasks/IScheduledTask.cs11
-rw-r--r--MediaBrowser.Common/ScheduledTasks/ITaskManager.cs46
-rw-r--r--MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs3
-rw-r--r--MediaBrowser.Common/ScheduledTasks/ScheduledTaskHelpers.cs5
-rw-r--r--MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs35
-rw-r--r--MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs3
-rw-r--r--MediaBrowser.Common/ScheduledTasks/TaskManager.cs66
-rw-r--r--MediaBrowser.Common/ScheduledTasks/Tasks/DeleteCacheFileTask.cs15
-rw-r--r--MediaBrowser.Common/ScheduledTasks/Tasks/DeleteLogFileTask.cs15
-rw-r--r--MediaBrowser.Common/ScheduledTasks/Tasks/ReloadLoggerTask.cs15
-rw-r--r--MediaBrowser.Common/ScheduledTasks/Tasks/SystemUpdateTask.cs10
-rw-r--r--MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs3
-rw-r--r--MediaBrowser.Controller/Entities/Movies/Movie.cs1
-rw-r--r--MediaBrowser.Controller/Entities/TV/Season.cs1
-rw-r--r--MediaBrowser.Controller/Entities/User.cs1
-rw-r--r--MediaBrowser.Controller/IO/DirectoryWatchers.cs16
-rw-r--r--MediaBrowser.Controller/IO/FileSystem.cs (renamed from MediaBrowser.Common/IO/FileSystem.cs)2
-rw-r--r--MediaBrowser.Controller/IO/FileSystemManager.cs8
-rw-r--r--MediaBrowser.Controller/Kernel.cs53
-rw-r--r--MediaBrowser.Controller/Library/ItemResolveArgs.cs1
-rw-r--r--MediaBrowser.Controller/Localization/BaseStrings.cs5
-rw-r--r--MediaBrowser.Controller/Localization/LocalizedStringData.cs (renamed from MediaBrowser.Common/Localization/LocalizedStringData.cs)2
-rw-r--r--MediaBrowser.Controller/Localization/LocalizedStrings.cs3
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj3
-rw-r--r--MediaBrowser.Controller/Providers/FolderProviderFromXml.cs2
-rw-r--r--MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/ImagesByNameProvider.cs8
-rw-r--r--MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs5
-rw-r--r--MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs5
-rw-r--r--MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs2
-rw-r--r--MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs2
-rw-r--r--MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs2
-rw-r--r--MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/SortNameProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs2
-rw-r--r--MediaBrowser.Controller/Resolvers/Audio/AudioResolver.cs16
-rw-r--r--MediaBrowser.Controller/Resolvers/Audio/MusicAlbumResolver.cs16
-rw-r--r--MediaBrowser.Controller/Resolvers/Audio/MusicArtistResolver.cs14
-rw-r--r--MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs7
-rw-r--r--MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs1
-rw-r--r--MediaBrowser.Controller/Resolvers/FolderResolver.cs2
-rw-r--r--MediaBrowser.Controller/Resolvers/LocalTrailerResolver.cs2
-rw-r--r--MediaBrowser.Controller/Resolvers/Movies/BoxSetResolver.cs2
-rw-r--r--MediaBrowser.Controller/Resolvers/Movies/MovieResolver.cs2
-rw-r--r--MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs19
-rw-r--r--MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs15
-rw-r--r--MediaBrowser.Controller/Resolvers/TV/SeriesResolver.cs2
-rw-r--r--MediaBrowser.Controller/Resolvers/VideoResolver.cs2
-rw-r--r--MediaBrowser.Controller/ScheduledTasks/ChapterImagesTask.cs17
-rw-r--r--MediaBrowser.Controller/ScheduledTasks/ImageCleanupTask.cs17
-rw-r--r--MediaBrowser.Controller/ScheduledTasks/PeopleValidationTask.cs13
-rw-r--r--MediaBrowser.Controller/ScheduledTasks/PluginUpdateTask.cs14
-rw-r--r--MediaBrowser.Controller/ScheduledTasks/RefreshMediaLibraryTask.cs15
-rw-r--r--MediaBrowser.Networking/MediaBrowser.Networking.csproj55
-rw-r--r--MediaBrowser.Networking/Properties/AssemblyInfo.cs31
-rw-r--r--MediaBrowser.Plugins.DefaultTheme/MediaBrowser.Plugins.DefaultTheme.csproj1
-rw-r--r--MediaBrowser.Plugins.DefaultTheme/Resources/AppResources.cs6
-rw-r--r--MediaBrowser.Plugins.DefaultTheme/Theme.cs2
-rw-r--r--MediaBrowser.Server.WorldWeatherOnline/MediaBrowser.Server.WorldWeatherOnline.csproj1
-rw-r--r--MediaBrowser.Server.WorldWeatherOnline/WeatherProvider.cs5
-rw-r--r--MediaBrowser.ServerApplication/App.xaml.cs53
-rw-r--r--MediaBrowser.UI/App.xaml.cs96
-rw-r--r--MediaBrowser.UI/Controller/UIKernel.cs21
-rw-r--r--MediaBrowser.UI/MediaBrowser.UI.csproj10
-rw-r--r--MediaBrowser.UI/Playback/ExternalPlayer/GenericExternalPlayer.cs5
-rw-r--r--MediaBrowser.UI/Playback/NVlc/InternalMediaPlayerNVlc.cs5
-rw-r--r--MediaBrowser.UI/packages.config1
-rw-r--r--MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs13
-rw-r--r--MediaBrowser.WebDashboard/Api/DashboardService.cs24
-rw-r--r--MediaBrowser.sln16
121 files changed, 780 insertions, 512 deletions
diff --git a/MediaBrowser.Api/EnvironmentService.cs b/MediaBrowser.Api/EnvironmentService.cs
index db768d0e8..83678c3f2 100644
--- a/MediaBrowser.Api/EnvironmentService.cs
+++ b/MediaBrowser.Api/EnvironmentService.cs
@@ -1,11 +1,9 @@
-using MediaBrowser.Common.IO;
-using MediaBrowser.Common.Net;
+using MediaBrowser.Common.Net;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Globalization;
using System.IO;
using System.Linq;
@@ -59,7 +57,6 @@ namespace MediaBrowser.Api
/// <summary>
/// Class EnvironmentService
/// </summary>
- [Export(typeof(IRestfulService))]
public class EnvironmentService : BaseRestService
{
/// <summary>
diff --git a/MediaBrowser.Api/HttpHandlers/PlaybackCheckInHandler.cs b/MediaBrowser.Api/HttpHandlers/PlaybackCheckInHandler.cs
index 7e0d27e49..9de3e2791 100644
--- a/MediaBrowser.Api/HttpHandlers/PlaybackCheckInHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/PlaybackCheckInHandler.cs
@@ -5,7 +5,6 @@ using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Connectivity;
using MediaBrowser.Model.Dto;
using System;
-using System.ComponentModel.Composition;
using System.Threading.Tasks;
namespace MediaBrowser.Api.HttpHandlers
@@ -13,7 +12,6 @@ namespace MediaBrowser.Api.HttpHandlers
/// <summary>
/// Provides a handler to set played status for an item
/// </summary>
- [Export(typeof(IHttpServerHandler))]
public class PlaybackCheckInHandler : BaseSerializationHandler<Kernel, UserItemDataDto>
{
/// <summary>
diff --git a/MediaBrowser.Api/HttpHandlers/UpdateMediaLibraryHandler.cs b/MediaBrowser.Api/HttpHandlers/UpdateMediaLibraryHandler.cs
index e5c42008e..df6edd6f9 100644
--- a/MediaBrowser.Api/HttpHandlers/UpdateMediaLibraryHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/UpdateMediaLibraryHandler.cs
@@ -1,19 +1,17 @@
-using MediaBrowser.Common.IO;
-using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
+using MediaBrowser.Controller.IO;
namespace MediaBrowser.Api.HttpHandlers
{
/// <summary>
/// Makes changes to the user's media library
/// </summary>
- [Export(typeof(IHttpServerHandler))]
public class UpdateMediaLibraryHandler : BaseActionHandler<Kernel>
{
/// <summary>
diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs
index 5e5888b3e..113bad083 100644
--- a/MediaBrowser.Api/Images/ImageService.cs
+++ b/MediaBrowser.Api/Images/ImageService.cs
@@ -6,7 +6,6 @@ using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Entities;
using ServiceStack.ServiceHost;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
@@ -114,7 +113,6 @@ namespace MediaBrowser.Api.Images
/// <summary>
/// Class ImageService
/// </summary>
- [Export(typeof(IRestfulService))]
public class ImageService : BaseRestService
{
/// <summary>
diff --git a/MediaBrowser.Api/Images/UploadImageHandler.cs b/MediaBrowser.Api/Images/UploadImageHandler.cs
index 13ea86563..758e96d85 100644
--- a/MediaBrowser.Api/Images/UploadImageHandler.cs
+++ b/MediaBrowser.Api/Images/UploadImageHandler.cs
@@ -5,7 +5,6 @@ using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -15,7 +14,6 @@ namespace MediaBrowser.Api.Images
/// <summary>
/// Class UploadImageHandler
/// </summary>
- [Export(typeof(IHttpServerHandler))]
class UploadImageHandler : BaseActionHandler<Kernel>
{
/// <summary>
diff --git a/MediaBrowser.Api/LibraryService.cs b/MediaBrowser.Api/LibraryService.cs
index bcf87ab67..4ca073c10 100644
--- a/MediaBrowser.Api/LibraryService.cs
+++ b/MediaBrowser.Api/LibraryService.cs
@@ -7,7 +7,6 @@ using MediaBrowser.Model.Entities;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
namespace MediaBrowser.Api
@@ -96,7 +95,6 @@ namespace MediaBrowser.Api
/// <summary>
/// Class LibraryService
/// </summary>
- [Export(typeof(IRestfulService))]
public class LibraryService : BaseRestService
{
/// <summary>
diff --git a/MediaBrowser.Api/LocalizationService.cs b/MediaBrowser.Api/LocalizationService.cs
index ce9f175e3..098c9f72a 100644
--- a/MediaBrowser.Api/LocalizationService.cs
+++ b/MediaBrowser.Api/LocalizationService.cs
@@ -5,7 +5,6 @@ using MediaBrowser.Model.Globalization;
using MoreLinq;
using ServiceStack.ServiceHost;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Globalization;
using System.Linq;
@@ -38,7 +37,6 @@ namespace MediaBrowser.Api
/// <summary>
/// Class CulturesService
/// </summary>
- [Export(typeof(IRestfulService))]
public class LocalizationService : BaseRestService
{
/// <summary>
diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj
index 1d204cc7a..f6045ddd1 100644
--- a/MediaBrowser.Api/MediaBrowser.Api.csproj
+++ b/MediaBrowser.Api/MediaBrowser.Api.csproj
@@ -64,7 +64,6 @@
<HintPath>..\packages\ServiceStack.Text.3.9.37\lib\net35\ServiceStack.Text.dll</HintPath>
</Reference>
<Reference Include="System" />
- <Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Runtime.Serialization" />
diff --git a/MediaBrowser.Api/PackageService.cs b/MediaBrowser.Api/PackageService.cs
index 924c33937..028242e72 100644
--- a/MediaBrowser.Api/PackageService.cs
+++ b/MediaBrowser.Api/PackageService.cs
@@ -6,7 +6,6 @@ using MediaBrowser.Model.Updates;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -93,7 +92,6 @@ namespace MediaBrowser.Api
/// <summary>
/// Class PackageService
/// </summary>
- [Export(typeof(IRestfulService))]
public class PackageService : BaseRestService
{
/// <summary>
diff --git a/MediaBrowser.Api/Plugin.cs b/MediaBrowser.Api/Plugin.cs
index c9e1d7c95..58c0ffcfa 100644
--- a/MediaBrowser.Api/Plugin.cs
+++ b/MediaBrowser.Api/Plugin.cs
@@ -3,7 +3,6 @@ using MediaBrowser.Model.Plugins;
using System;
using System.Collections.Generic;
using System.ComponentModel;
-using System.ComponentModel.Composition;
using System.Diagnostics;
using System.Linq;
using System.Threading;
@@ -14,7 +13,6 @@ namespace MediaBrowser.Api
/// <summary>
/// Class Plugin
/// </summary>
- [Export(typeof(IPlugin))]
public class Plugin : BasePlugin<BasePluginConfiguration>
{
/// <summary>
diff --git a/MediaBrowser.Api/PluginService.cs b/MediaBrowser.Api/PluginService.cs
index 73bafd9fd..f982602bf 100644
--- a/MediaBrowser.Api/PluginService.cs
+++ b/MediaBrowser.Api/PluginService.cs
@@ -7,10 +7,8 @@ using MediaBrowser.Model.Plugins;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
-using System.Threading.Tasks;
using ServiceStack.Text.Controller;
namespace MediaBrowser.Api
@@ -119,7 +117,6 @@ namespace MediaBrowser.Api
/// <summary>
/// Class PluginsService
/// </summary>
- [Export(typeof(IRestfulService))]
public class PluginService : BaseRestService
{
/// <summary>
diff --git a/MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs b/MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs
index bd12454a0..1ca744542 100644
--- a/MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs
+++ b/MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs
@@ -6,7 +6,6 @@ using MediaBrowser.Model.Tasks;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using ServiceStack.Text.Controller;
@@ -83,17 +82,27 @@ namespace MediaBrowser.Api.ScheduledTasks
/// <summary>
/// Class ScheduledTasksService
/// </summary>
- [Export(typeof(IRestfulService))]
public class ScheduledTaskService : BaseRestService
{
/// <summary>
+ /// Gets or sets the task manager.
+ /// </summary>
+ /// <value>The task manager.</value>
+ private ITaskManager TaskManager { get; set; }
+
+ public ScheduledTaskService(ITaskManager taskManager)
+ {
+ TaskManager = taskManager;
+ }
+
+ /// <summary>
/// Gets the specified request.
/// </summary>
/// <param name="request">The request.</param>
/// <returns>IEnumerable{TaskInfo}.</returns>
public object Get(GetScheduledTasks request)
{
- var result = Kernel.ScheduledTasks.OrderBy(i => i.Name)
+ var result = TaskManager.ScheduledTasks.OrderBy(i => i.Name)
.Select(ScheduledTaskHelpers.GetTaskInfo).ToList();
return ToOptimizedResult(result);
@@ -106,7 +115,7 @@ namespace MediaBrowser.Api.ScheduledTasks
/// <returns>IEnumerable{TaskInfo}.</returns>
public object Get(GetScheduledTask request)
{
- var task = Kernel.ScheduledTasks.FirstOrDefault(i => i.Id == request.Id);
+ var task = TaskManager.ScheduledTasks.FirstOrDefault(i => i.Id == request.Id);
if (task == null)
{
@@ -124,7 +133,7 @@ namespace MediaBrowser.Api.ScheduledTasks
/// <param name="request">The request.</param>
public void Post(StartScheduledTask request)
{
- var task = Kernel.ScheduledTasks.FirstOrDefault(i => i.Id == request.Id);
+ var task = TaskManager.ScheduledTasks.FirstOrDefault(i => i.Id == request.Id);
if (task == null)
{
@@ -140,7 +149,7 @@ namespace MediaBrowser.Api.ScheduledTasks
/// <param name="request">The request.</param>
public void Delete(StopScheduledTask request)
{
- var task = Kernel.ScheduledTasks.FirstOrDefault(i => i.Id == request.Id);
+ var task = TaskManager.ScheduledTasks.FirstOrDefault(i => i.Id == request.Id);
if (task == null)
{
@@ -160,8 +169,8 @@ namespace MediaBrowser.Api.ScheduledTasks
// https://code.google.com/p/servicestack/source/browse/trunk/Common/ServiceStack.Text/ServiceStack.Text/Controller/PathInfo.cs
var pathInfo = PathInfo.Parse(Request.PathInfo);
var id = new Guid(pathInfo.GetArgumentValue<string>(1));
-
- var task = Kernel.ScheduledTasks.FirstOrDefault(i => i.Id == id);
+
+ var task = TaskManager.ScheduledTasks.FirstOrDefault(i => i.Id == id);
if (task == null)
{
@@ -170,7 +179,7 @@ namespace MediaBrowser.Api.ScheduledTasks
var triggerInfos = JsonSerializer.DeserializeFromStream<TaskTriggerInfo[]>(request.RequestStream);
- task.Triggers = triggerInfos.Select(t => ScheduledTaskHelpers.GetTrigger(t, Kernel));
+ task.Triggers = triggerInfos.Select(ScheduledTaskHelpers.GetTrigger);
}
}
}
diff --git a/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs b/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs
index cb7863d84..72c23a0ef 100644
--- a/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs
+++ b/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs
@@ -1,10 +1,8 @@
using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.ScheduledTasks;
-using MediaBrowser.Controller;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Tasks;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading.Tasks;
@@ -13,10 +11,15 @@ namespace MediaBrowser.Api.ScheduledTasks
/// <summary>
/// Class ScheduledTasksWebSocketListener
/// </summary>
- [Export(typeof(IWebSocketListener))]
public class ScheduledTasksWebSocketListener : BasePeriodicWebSocketListener<IEnumerable<TaskInfo>, object>
{
/// <summary>
+ /// Gets or sets the task manager.
+ /// </summary>
+ /// <value>The task manager.</value>
+ private ITaskManager TaskManager { get; set; }
+
+ /// <summary>
/// Gets the name.
/// </summary>
/// <value>The name.</value>
@@ -33,13 +36,12 @@ namespace MediaBrowser.Api.ScheduledTasks
/// <summary>
/// Initializes a new instance of the <see cref="ScheduledTasksWebSocketListener" /> class.
/// </summary>
- /// <param name="kernel">The kernel.</param>
/// <param name="logger">The logger.</param>
- [ImportingConstructor]
- public ScheduledTasksWebSocketListener([Import("kernel")] Kernel kernel, [Import("logger")] ILogger logger)
+ /// <param name="taskManager">The task manager.</param>
+ public ScheduledTasksWebSocketListener(ILogger logger, ITaskManager taskManager)
: base(logger)
{
- _kernel = kernel;
+ TaskManager = taskManager;
}
/// <summary>
@@ -49,7 +51,7 @@ namespace MediaBrowser.Api.ScheduledTasks
/// <returns>Task{IEnumerable{TaskInfo}}.</returns>
protected override Task<IEnumerable<TaskInfo>> GetDataToSend(object state)
{
- return Task.FromResult(_kernel.ScheduledTasks.OrderBy(i => i.Name)
+ return Task.FromResult(TaskManager.ScheduledTasks.OrderBy(i => i.Name)
.Select(ScheduledTaskHelpers.GetTaskInfo));
}
}
diff --git a/MediaBrowser.Api/Streaming/AudioHandler.cs b/MediaBrowser.Api/Streaming/AudioHandler.cs
index b7d5afbb9..2332f29d3 100644
--- a/MediaBrowser.Api/Streaming/AudioHandler.cs
+++ b/MediaBrowser.Api/Streaming/AudioHandler.cs
@@ -5,7 +5,6 @@ using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Model.Dto;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Net;
@@ -14,7 +13,6 @@ namespace MediaBrowser.Api.Streaming
/// <summary>
/// Providers a progressive streaming audio api
/// </summary>
- [Export(typeof(IHttpServerHandler))]
public class AudioHandler : BaseProgressiveStreamingHandler<Audio>
{
/// <summary>
diff --git a/MediaBrowser.Api/Streaming/BaseStreamingHandler.cs b/MediaBrowser.Api/Streaming/BaseStreamingHandler.cs
index d800a40fe..8c5fd34b1 100644
--- a/MediaBrowser.Api/Streaming/BaseStreamingHandler.cs
+++ b/MediaBrowser.Api/Streaming/BaseStreamingHandler.cs
@@ -859,11 +859,11 @@ namespace MediaBrowser.Api.Streaming
{
var video = LibraryItem as Video;
- if (video != null && video.VideoType == VideoType.Iso &&
- video.IsoType.HasValue && Kernel.IsoManager.CanMount(video.Path))
- {
- IsoMount = await Kernel.IsoManager.Mount(video.Path, CancellationToken.None).ConfigureAwait(false);
- }
+ //if (video != null && video.VideoType == VideoType.Iso &&
+ // video.IsoType.HasValue && Kernel.IsoManager.CanMount(video.Path))
+ //{
+ // IsoMount = await Kernel.IsoManager.Mount(video.Path, CancellationToken.None).ConfigureAwait(false);
+ //}
var process = new Process
{
diff --git a/MediaBrowser.Api/Streaming/HlsAudioPlaylistHandler.cs b/MediaBrowser.Api/Streaming/HlsAudioPlaylistHandler.cs
index 7aea163af..e9ae3a005 100644
--- a/MediaBrowser.Api/Streaming/HlsAudioPlaylistHandler.cs
+++ b/MediaBrowser.Api/Streaming/HlsAudioPlaylistHandler.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Model.Dto;
using System;
-using System.ComponentModel.Composition;
using System.Net;
namespace MediaBrowser.Api.Streaming
@@ -10,7 +9,6 @@ namespace MediaBrowser.Api.Streaming
/// <summary>
/// Class HlsAudioPlaylistHandler
/// </summary>
- [Export(typeof(IHttpServerHandler))]
public class HlsAudioPlaylistHandler : BaseHlsPlaylistHandler<Audio>
{
/// <summary>
diff --git a/MediaBrowser.Api/Streaming/HlsSegmentHandler.cs b/MediaBrowser.Api/Streaming/HlsSegmentHandler.cs
index 5b022ab3d..4305fd8a7 100644
--- a/MediaBrowser.Api/Streaming/HlsSegmentHandler.cs
+++ b/MediaBrowser.Api/Streaming/HlsSegmentHandler.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Net;
using System.Threading.Tasks;
@@ -11,7 +10,6 @@ namespace MediaBrowser.Api.Streaming
/// <summary>
/// Class HlsSegmentHandler
/// </summary>
- [Export(typeof(IHttpServerHandler))]
public class HlsSegmentHandler : BaseHandler<Kernel>
{
/// <summary>
diff --git a/MediaBrowser.Api/Streaming/HlsVideoPlaylistHandler.cs b/MediaBrowser.Api/Streaming/HlsVideoPlaylistHandler.cs
index 97a5b2ce6..70f825f02 100644
--- a/MediaBrowser.Api/Streaming/HlsVideoPlaylistHandler.cs
+++ b/MediaBrowser.Api/Streaming/HlsVideoPlaylistHandler.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller.Entities;
using System;
-using System.ComponentModel.Composition;
using System.Net;
namespace MediaBrowser.Api.Streaming
@@ -9,7 +8,6 @@ namespace MediaBrowser.Api.Streaming
/// <summary>
/// Class HlsVideoPlaylistHandler
/// </summary>
- [Export(typeof(IHttpServerHandler))]
public class HlsVideoPlaylistHandler : BaseHlsPlaylistHandler<Video>
{
/// <summary>
diff --git a/MediaBrowser.Api/Streaming/VideoHandler.cs b/MediaBrowser.Api/Streaming/VideoHandler.cs
index 4a05d2547..da60297f2 100644
--- a/MediaBrowser.Api/Streaming/VideoHandler.cs
+++ b/MediaBrowser.Api/Streaming/VideoHandler.cs
@@ -1,21 +1,15 @@
-using System.IO;
-using System.Threading;
-using MediaBrowser.Common.IO;
-using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Resolvers;
using System;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Net;
-using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.Streaming
{
/// <summary>
/// Providers a progressive streaming video api
/// </summary>
- [Export(typeof(IHttpServerHandler))]
class VideoHandler : BaseProgressiveStreamingHandler<Video>
{
/// <summary>
diff --git a/MediaBrowser.Api/SystemService.cs b/MediaBrowser.Api/SystemService.cs
index 9d15feb80..04632aa8e 100644
--- a/MediaBrowser.Api/SystemService.cs
+++ b/MediaBrowser.Api/SystemService.cs
@@ -5,7 +5,6 @@ using MediaBrowser.Controller;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.System;
using ServiceStack.ServiceHost;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading.Tasks;
@@ -47,7 +46,6 @@ namespace MediaBrowser.Api
/// <summary>
/// Class SystemInfoService
/// </summary>
- [Export(typeof(IRestfulService))]
public class SystemService : BaseRestService
{
/// <summary>
diff --git a/MediaBrowser.Api/UserLibrary/GenresService.cs b/MediaBrowser.Api/UserLibrary/GenresService.cs
index ea97fea3e..5d72236fa 100644
--- a/MediaBrowser.Api/UserLibrary/GenresService.cs
+++ b/MediaBrowser.Api/UserLibrary/GenresService.cs
@@ -4,7 +4,6 @@ using MediaBrowser.Controller.Entities;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading.Tasks;
@@ -22,7 +21,6 @@ namespace MediaBrowser.Api.UserLibrary
/// <summary>
/// Class GenresService
/// </summary>
- [Export(typeof(IRestfulService))]
public class GenresService : BaseItemsByNameService<Genre>
{
/// <summary>
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index 3cc503184..0586b2b5e 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -8,7 +8,6 @@ using MediaBrowser.Model.Entities;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading.Tasks;
@@ -144,7 +143,6 @@ namespace MediaBrowser.Api.UserLibrary
/// <summary>
/// Class ItemsService
/// </summary>
- [Export(typeof(IRestfulService))]
public class ItemsService : BaseRestService
{
/// <summary>
diff --git a/MediaBrowser.Api/UserLibrary/PersonsService.cs b/MediaBrowser.Api/UserLibrary/PersonsService.cs
index 71dc32b32..181d511a6 100644
--- a/MediaBrowser.Api/UserLibrary/PersonsService.cs
+++ b/MediaBrowser.Api/UserLibrary/PersonsService.cs
@@ -4,7 +4,6 @@ using MediaBrowser.Controller.Entities;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading.Tasks;
@@ -27,7 +26,6 @@ namespace MediaBrowser.Api.UserLibrary
/// <summary>
/// Class PersonsService
/// </summary>
- [Export(typeof(IRestfulService))]
public class PersonsService : BaseItemsByNameService<Person>
{
/// <summary>
diff --git a/MediaBrowser.Api/UserLibrary/StudiosService.cs b/MediaBrowser.Api/UserLibrary/StudiosService.cs
index da9106367..8b1824d83 100644
--- a/MediaBrowser.Api/UserLibrary/StudiosService.cs
+++ b/MediaBrowser.Api/UserLibrary/StudiosService.cs
@@ -1,10 +1,8 @@
-using MediaBrowser.Common.Net;
-using MediaBrowser.Controller;
+using MediaBrowser.Controller;
using MediaBrowser.Controller.Entities;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading.Tasks;
@@ -22,7 +20,6 @@ namespace MediaBrowser.Api.UserLibrary
/// <summary>
/// Class StudiosService
/// </summary>
- [Export(typeof(IRestfulService))]
public class StudiosService : BaseItemsByNameService<Studio>
{
/// <summary>
diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
index 016b294ae..576ff8892 100644
--- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
+++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
@@ -9,7 +9,6 @@ using MediaBrowser.Model.Entities;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
@@ -252,7 +251,6 @@ namespace MediaBrowser.Api.UserLibrary
/// <summary>
/// Class UserLibraryService
/// </summary>
- [Export(typeof(IRestfulService))]
public class UserLibraryService : BaseRestService
{
public object Get(GetSpecialFeatures request)
diff --git a/MediaBrowser.Api/UserLibrary/YearsService.cs b/MediaBrowser.Api/UserLibrary/YearsService.cs
index c3ea11420..14fa645af 100644
--- a/MediaBrowser.Api/UserLibrary/YearsService.cs
+++ b/MediaBrowser.Api/UserLibrary/YearsService.cs
@@ -4,7 +4,6 @@ using MediaBrowser.Controller.Entities;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
@@ -23,7 +22,6 @@ namespace MediaBrowser.Api.UserLibrary
/// <summary>
/// Class YearsService
/// </summary>
- [Export(typeof(IRestfulService))]
public class YearsService : BaseItemsByNameService<Year>
{
/// <summary>
diff --git a/MediaBrowser.Api/UserService.cs b/MediaBrowser.Api/UserService.cs
index c4703a7a0..c76479d19 100644
--- a/MediaBrowser.Api/UserService.cs
+++ b/MediaBrowser.Api/UserService.cs
@@ -7,7 +7,6 @@ using MediaBrowser.Model.Dto;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
@@ -134,7 +133,6 @@ namespace MediaBrowser.Api
/// <summary>
/// Class UsersService
/// </summary>
- [Export(typeof(IRestfulService))]
public class UserService : BaseRestService
{
/// <summary>
diff --git a/MediaBrowser.Api/WeatherService.cs b/MediaBrowser.Api/WeatherService.cs
index 0c04f5ec0..c79c2da28 100644
--- a/MediaBrowser.Api/WeatherService.cs
+++ b/MediaBrowser.Api/WeatherService.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller;
using MediaBrowser.Model.Weather;
using ServiceStack.ServiceHost;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading;
@@ -24,7 +23,6 @@ namespace MediaBrowser.Api
/// <summary>
/// Class WeatherService
/// </summary>
- [Export(typeof(IRestfulService))]
public class WeatherService : BaseRestService
{
/// <summary>
diff --git a/MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs b/MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs
index 144997c73..6e3e10361 100644
--- a/MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs
+++ b/MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs
@@ -4,7 +4,6 @@ using MediaBrowser.Controller;
using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
@@ -14,7 +13,6 @@ namespace MediaBrowser.Api.WebSocket
/// <summary>
/// Class ScheduledTasksWebSocketListener
/// </summary>
- [Export(typeof(IWebSocketListener))]
public class LogFileWebSocketListener : BasePeriodicWebSocketListener<IEnumerable<string>, LogFileWebSocketState>
{
/// <summary>
@@ -36,8 +34,7 @@ namespace MediaBrowser.Api.WebSocket
/// </summary>
/// <param name="logger">The logger.</param>
/// <param name="kernel">The kernel.</param>
- [ImportingConstructor]
- public LogFileWebSocketListener([Import("logger")] ILogger logger, [Import("kernel")] Kernel kernel)
+ public LogFileWebSocketListener(ILogger logger, Kernel kernel)
: base(logger)
{
_kernel = kernel;
diff --git a/MediaBrowser.Api/WebSocket/SystemInfoWebSocketListener.cs b/MediaBrowser.Api/WebSocket/SystemInfoWebSocketListener.cs
index c41714581..40c3f2f24 100644
--- a/MediaBrowser.Api/WebSocket/SystemInfoWebSocketListener.cs
+++ b/MediaBrowser.Api/WebSocket/SystemInfoWebSocketListener.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.System;
-using System.ComponentModel.Composition;
using System.Threading.Tasks;
namespace MediaBrowser.Api.WebSocket
@@ -10,7 +9,6 @@ namespace MediaBrowser.Api.WebSocket
/// <summary>
/// Class SystemInfoWebSocketListener
/// </summary>
- [Export(typeof(IWebSocketListener))]
public class SystemInfoWebSocketListener : BasePeriodicWebSocketListener<SystemInfo, object>
{
/// <summary>
@@ -32,8 +30,7 @@ namespace MediaBrowser.Api.WebSocket
/// </summary>
/// <param name="kernel">The kernel.</param>
/// <param name="logger">The logger.</param>
- [ImportingConstructor]
- public SystemInfoWebSocketListener([Import("kernel")] Kernel kernel, [Import("logger")] ILogger logger)
+ public SystemInfoWebSocketListener(Kernel kernel, ILogger logger)
: base(logger)
{
_kernel = kernel;
diff --git a/MediaBrowser.ApiInteraction.Javascript/JavascriptApiClientService.cs b/MediaBrowser.ApiInteraction.Javascript/JavascriptApiClientService.cs
index b94b8e071..c03146e69 100644
--- a/MediaBrowser.ApiInteraction.Javascript/JavascriptApiClientService.cs
+++ b/MediaBrowser.ApiInteraction.Javascript/JavascriptApiClientService.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Common.Net;
using ServiceStack.ServiceHost;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading.Tasks;
@@ -25,7 +24,6 @@ namespace MediaBrowser.ApiInteraction.Javascript
/// <summary>
/// Class JavascriptApiClientService
/// </summary>
- [Export(typeof(IRestfulService))]
public class JavascriptApiClientService : BaseRestService
{
/// <summary>
diff --git a/MediaBrowser.ApiInteraction.Javascript/MediaBrowser.ApiInteraction.Javascript.csproj b/MediaBrowser.ApiInteraction.Javascript/MediaBrowser.ApiInteraction.Javascript.csproj
index dde00e984..3e8ed6c38 100644
--- a/MediaBrowser.ApiInteraction.Javascript/MediaBrowser.ApiInteraction.Javascript.csproj
+++ b/MediaBrowser.ApiInteraction.Javascript/MediaBrowser.ApiInteraction.Javascript.csproj
@@ -68,7 +68,6 @@
<HintPath>..\packages\ServiceStack.Text.3.9.37\lib\net35\ServiceStack.Text.dll</HintPath>
</Reference>
<Reference Include="System" />
- <Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
diff --git a/MediaBrowser.Common/Kernel/BaseKernel.cs b/MediaBrowser.Common/Kernel/BaseKernel.cs
index 85954cb82..2b9550496 100644
--- a/MediaBrowser.Common/Kernel/BaseKernel.cs
+++ b/MediaBrowser.Common/Kernel/BaseKernel.cs
@@ -9,9 +9,6 @@ using MediaBrowser.Model.Logging;
using MediaBrowser.Model.System;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
using System.Diagnostics;
using System.IO;
using System.Linq;
@@ -182,29 +179,15 @@ namespace MediaBrowser.Common.Kernel
/// Gets the list of currently loaded plugins
/// </summary>
/// <value>The plugins.</value>
- [ImportMany(typeof(IPlugin))]
public IEnumerable<IPlugin> Plugins { get; protected set; }
/// <summary>
- /// Gets the list of Scheduled Tasks
- /// </summary>
- /// <value>The scheduled tasks.</value>
- [ImportMany(typeof(IScheduledTask))]
- public IEnumerable<IScheduledTask> ScheduledTasks { get; private set; }
-
- /// <summary>
/// Gets the web socket listeners.
/// </summary>
/// <value>The web socket listeners.</value>
public IEnumerable<IWebSocketListener> WebSocketListeners { get; private set; }
/// <summary>
- /// Gets the MEF CompositionContainer
- /// </summary>
- /// <value>The composition container.</value>
- private CompositionContainer CompositionContainer { get; set; }
-
- /// <summary>
/// The _HTTP manager
/// </summary>
/// <value>The HTTP manager.</value>
@@ -217,12 +200,6 @@ namespace MediaBrowser.Common.Kernel
public TcpManager TcpManager { get; private set; }
/// <summary>
- /// Gets the task manager.
- /// </summary>
- /// <value>The task manager.</value>
- public TaskManager TaskManager { get; private set; }
-
- /// <summary>
/// Gets the rest services.
/// </summary>
/// <value>The rest services.</value>
@@ -325,10 +302,16 @@ namespace MediaBrowser.Common.Kernel
protected IApplicationHost ApplicationHost { get; private set; }
/// <summary>
+ /// Gets or sets the task manager.
+ /// </summary>
+ /// <value>The task manager.</value>
+ protected ITaskManager TaskManager { get; set; }
+
+ /// <summary>
/// Gets the assemblies.
/// </summary>
/// <value>The assemblies.</value>
- public Assembly[] Assemblies { get; private set; }
+ protected Assembly[] Assemblies { get; private set; }
/// <summary>
/// Gets all types.
@@ -407,7 +390,7 @@ namespace MediaBrowser.Common.Kernel
await OnConfigurationLoaded().ConfigureAwait(false);
DisposeTaskManager();
- TaskManager = new TaskManager(this, Logger);
+ TaskManager = new TaskManager(Logger);
Logger.Info("Loading Plugins");
await ReloadComposableParts().ConfigureAwait(false);
@@ -453,8 +436,6 @@ namespace MediaBrowser.Common.Kernel
ComposeParts(AllTypes);
await OnComposablePartsLoaded().ConfigureAwait(false);
-
- CompositionContainer.Catalog.Dispose();
}
/// <summary>
@@ -465,11 +446,7 @@ namespace MediaBrowser.Common.Kernel
{
var concreteTypes = allTypes.Where(t => t.IsClass && !t.IsAbstract && !t.IsInterface && !t.IsGenericType).ToArray();
- CompositionContainer = GetSafeCompositionContainer(concreteTypes.Select(i => new TypeCatalog(i)));
-
- RegisterExportedValues(CompositionContainer);
-
- CompositionContainer.ComposeParts(this);
+ RegisterExportedValues();
FindParts(concreteTypes);
}
@@ -482,6 +459,11 @@ namespace MediaBrowser.Common.Kernel
{
RestServices = GetExports<IRestfulService>(allTypes);
WebSocketListeners = GetExports<IWebSocketListener>(allTypes);
+ Plugins = GetExports<IPlugin>(allTypes);
+
+ var tasks = GetExports<IScheduledTask>(allTypes, false);
+
+ TaskManager.AddTasks(tasks);
}
/// <summary>
@@ -489,8 +471,9 @@ namespace MediaBrowser.Common.Kernel
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="allTypes">All types.</param>
+ /// <param name="manageLiftime">if set to <c>true</c> [manage liftime].</param>
/// <returns>IEnumerable{``0}.</returns>
- protected IEnumerable<T> GetExports<T>(Type[] allTypes)
+ protected IEnumerable<T> GetExports<T>(Type[] allTypes, bool manageLiftime = true)
{
var currentType = typeof(T);
@@ -498,7 +481,10 @@ namespace MediaBrowser.Common.Kernel
var parts = allTypes.Where(currentType.IsAssignableFrom).Select(Instantiate).Cast<T>().ToArray();
- _disposableParts.AddRange(parts.OfType<IDisposable>());
+ if (manageLiftime)
+ {
+ _disposableParts.AddRange(parts.OfType<IDisposable>());
+ }
return parts;
}
@@ -517,13 +503,10 @@ namespace MediaBrowser.Common.Kernel
/// Composes the exported values.
/// </summary>
/// <param name="container">The container.</param>
- protected virtual void RegisterExportedValues(CompositionContainer container)
+ protected virtual void RegisterExportedValues()
{
ApplicationHost.Register<IKernel>(this);
-
- container.ComposeExportedValue("logger", Logger);
- container.ComposeExportedValue("appHost", ApplicationHost);
- container.ComposeExportedValue("isoManager", ApplicationHost.Resolve<IIsoManager>());
+ ApplicationHost.Register(TaskManager);
}
/// <summary>
@@ -591,46 +574,6 @@ namespace MediaBrowser.Common.Kernel
}
/// <summary>
- /// Plugins that live on both the server and UI are going to have references to assemblies from both sides.
- /// But looks for Parts on one side, it will throw an exception when it seems Types from the other side that it doesn't have a reference to.
- /// For example, a plugin provides a Resolver. When MEF runs in the UI, it will throw an exception when it sees the resolver because there won't be a reference to the base class.
- /// This method will catch those exceptions while retining the list of Types that MEF is able to resolve.
- /// </summary>
- /// <param name="catalogs">The catalogs.</param>
- /// <returns>CompositionContainer.</returns>
- /// <exception cref="System.ArgumentNullException">catalogs</exception>
- private static CompositionContainer GetSafeCompositionContainer(IEnumerable<ComposablePartCatalog> catalogs)
- {
- if (catalogs == null)
- {
- throw new ArgumentNullException("catalogs");
- }
-
- var newList = new List<ComposablePartCatalog>();
-
- // Go through each Catalog
- foreach (var catalog in catalogs)
- {
- try
- {
- // Try to have MEF find Parts
- catalog.Parts.ToArray();
-
- // If it succeeds we can use the entire catalog
- newList.Add(catalog);
- }
- catch (ReflectionTypeLoadException ex)
- {
- // If it fails we can still get a list of the Types it was able to resolve and create TypeCatalogs
- var typeCatalogs = ex.Types.Where(t => t != null).Select(t => new TypeCatalog(t));
- newList.AddRange(typeCatalogs);
- }
- }
-
- return new CompositionContainer(new AggregateCatalog(newList));
- }
-
- /// <summary>
/// Gets a list of types within an assembly
/// This will handle situations that would normally throw an exception - such as a type within the assembly that depends on some other non-existant reference
/// </summary>
@@ -663,11 +606,6 @@ namespace MediaBrowser.Common.Kernel
{
return Task.Run(() =>
{
- foreach (var task in ScheduledTasks)
- {
- task.Initialize(this, Logger);
- }
-
// Start-up each plugin
Parallel.ForEach(Plugins, plugin =>
{
@@ -722,11 +660,6 @@ namespace MediaBrowser.Common.Kernel
DisposeComposableParts();
- foreach (var part in _disposableParts)
- {
- part.Dispose();
- }
-
_disposableParts.Clear();
}
}
@@ -772,9 +705,9 @@ namespace MediaBrowser.Common.Kernel
/// </summary>
protected virtual void DisposeComposableParts()
{
- if (CompositionContainer != null)
+ foreach (var part in _disposableParts)
{
- CompositionContainer.Dispose();
+ part.Dispose();
}
}
diff --git a/MediaBrowser.Common/Kernel/IApplicationHost.cs b/MediaBrowser.Common/Kernel/IApplicationHost.cs
index d2b1ab7a2..ae2e71667 100644
--- a/MediaBrowser.Common/Kernel/IApplicationHost.cs
+++ b/MediaBrowser.Common/Kernel/IApplicationHost.cs
@@ -63,6 +63,13 @@ namespace MediaBrowser.Common.Kernel
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns>``0.</returns>
- T Resolve<T>() where T : class;
+ T Resolve<T>();
+
+ /// <summary>
+ /// Resolves this instance.
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <returns>``0.</returns>
+ T TryResolve<T>();
}
}
diff --git a/MediaBrowser.Common/Kernel/IKernel.cs b/MediaBrowser.Common/Kernel/IKernel.cs
index c0e650fc7..1685f1f64 100644
--- a/MediaBrowser.Common/Kernel/IKernel.cs
+++ b/MediaBrowser.Common/Kernel/IKernel.cs
@@ -1,12 +1,10 @@
using MediaBrowser.Common.Net;
using MediaBrowser.Common.Plugins;
-using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Common.Serialization;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.System;
using System;
using System.Collections.Generic;
-using System.Reflection;
using System.Threading.Tasks;
namespace MediaBrowser.Common.Kernel
@@ -70,12 +68,6 @@ namespace MediaBrowser.Common.Kernel
SystemInfo GetSystemInfo();
/// <summary>
- /// Gets the scheduled tasks.
- /// </summary>
- /// <value>The scheduled tasks.</value>
- IEnumerable<IScheduledTask> ScheduledTasks { get; }
-
- /// <summary>
/// Reloads the logger.
/// </summary>
void ReloadLogger();
@@ -134,12 +126,6 @@ namespace MediaBrowser.Common.Kernel
TcpManager TcpManager { get; }
/// <summary>
- /// Gets the task manager.
- /// </summary>
- /// <value>The task manager.</value>
- TaskManager TaskManager { get; }
-
- /// <summary>
/// Gets the web socket listeners.
/// </summary>
/// <value>The web socket listeners.</value>
@@ -161,12 +147,6 @@ namespace MediaBrowser.Common.Kernel
event EventHandler<EventArgs> ConfigurationUpdated;
/// <summary>
- /// Gets the assemblies.
- /// </summary>
- /// <value>The assemblies.</value>
- Assembly[] Assemblies { get; }
-
- /// <summary>
/// Gets the rest services.
/// </summary>
/// <value>The rest services.</value>
diff --git a/MediaBrowser.Common/MediaBrowser.Common.csproj b/MediaBrowser.Common/MediaBrowser.Common.csproj
index cae26b3df..6542ab81d 100644
--- a/MediaBrowser.Common/MediaBrowser.Common.csproj
+++ b/MediaBrowser.Common/MediaBrowser.Common.csproj
@@ -89,7 +89,6 @@
<HintPath>..\packages\ServiceStack.Text.3.9.37\lib\net35\ServiceStack.Text.dll</HintPath>
</Reference>
<Reference Include="System" />
- <Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Management" />
@@ -125,7 +124,6 @@
<Compile Include="Events\GenericEventArgs.cs" />
<Compile Include="Extensions\NamedLock.cs" />
<Compile Include="Extensions\ResourceNotFoundException.cs" />
- <Compile Include="IO\FileSystem.cs" />
<Compile Include="IO\FileSystemRepository.cs" />
<Compile Include="IO\IIsoManager.cs" />
<Compile Include="IO\IIsoMount.cs" />
@@ -138,7 +136,6 @@
<Compile Include="Kernel\IApplicationHost.cs" />
<Compile Include="Kernel\IKernel.cs" />
<Compile Include="Kernel\TcpManager.cs" />
- <Compile Include="Localization\LocalizedStringData.cs" />
<Compile Include="Net\AlchemyWebSocket.cs" />
<Compile Include="Net\BaseRestService.cs" />
<Compile Include="Net\Handlers\BaseActionHandler.cs" />
@@ -146,6 +143,7 @@
<Compile Include="Net\Handlers\StaticFileHandler.cs" />
<Compile Include="Net\HttpManager.cs" />
<Compile Include="Net\IRestfulService.cs" />
+ <Compile Include="Net\IUdpServer.cs" />
<Compile Include="Net\IWebSocket.cs" />
<Compile Include="Net\MimeTypes.cs" />
<Compile Include="Net\NativeWebSocket.cs" />
@@ -161,6 +159,7 @@
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
+ <Compile Include="ScheduledTasks\ITaskManager.cs" />
<Compile Include="ScheduledTasks\TaskManager.cs" />
<Compile Include="ScheduledTasks\Tasks\ReloadLoggerTask.cs" />
<Compile Include="ScheduledTasks\ScheduledTaskHelpers.cs" />
diff --git a/MediaBrowser.Common/Net/HttpServer.cs b/MediaBrowser.Common/Net/HttpServer.cs
index b09c95da0..20ee615ad 100644
--- a/MediaBrowser.Common/Net/HttpServer.cs
+++ b/MediaBrowser.Common/Net/HttpServer.cs
@@ -4,6 +4,7 @@ using MediaBrowser.Common.Kernel;
using MediaBrowser.Model.Logging;
using ServiceStack.Api.Swagger;
using ServiceStack.Common.Web;
+using ServiceStack.Configuration;
using ServiceStack.Logging.NLogger;
using ServiceStack.ServiceHost;
using ServiceStack.ServiceInterface.Cors;
@@ -153,6 +154,8 @@ namespace MediaBrowser.Common.Net
DebugMode = true
});
}
+
+ container.Adapter = new ContainerAdapter(ApplicationHost);
container.Register(Kernel);
container.Register(_logger);
@@ -464,4 +467,23 @@ namespace MediaBrowser.Common.Net
/// <value>The endpoint.</value>
public IPEndPoint Endpoint { get; set; }
}
+
+ class ContainerAdapter : IContainerAdapter
+ {
+ private readonly IApplicationHost _appHost;
+
+ public ContainerAdapter(IApplicationHost appHost)
+ {
+ _appHost = appHost;
+ }
+ public T Resolve<T>()
+ {
+ return _appHost.Resolve<T>();
+ }
+
+ public T TryResolve<T>()
+ {
+ return _appHost.TryResolve<T>();
+ }
+ }
} \ No newline at end of file
diff --git a/MediaBrowser.Common/Net/IUdpServer.cs b/MediaBrowser.Common/Net/IUdpServer.cs
new file mode 100644
index 000000000..01a8ef021
--- /dev/null
+++ b/MediaBrowser.Common/Net/IUdpServer.cs
@@ -0,0 +1,7 @@
+
+namespace MediaBrowser.Common.Net
+{
+ public interface IUdpServer
+ {
+ }
+}
diff --git a/MediaBrowser.Common/ScheduledTasks/BaseScheduledTask.cs b/MediaBrowser.Common/ScheduledTasks/BaseScheduledTask.cs
index 395c73a84..845faf31a 100644
--- a/MediaBrowser.Common/ScheduledTasks/BaseScheduledTask.cs
+++ b/MediaBrowser.Common/ScheduledTasks/BaseScheduledTask.cs
@@ -17,7 +17,7 @@ namespace MediaBrowser.Common.ScheduledTasks
/// </summary>
/// <typeparam name="TKernelType">The type of the T kernel type.</typeparam>
public abstract class BaseScheduledTask<TKernelType> : IScheduledTask
- where TKernelType : IKernel
+ where TKernelType : class, IKernel
{
/// <summary>
/// Gets the kernel.
@@ -26,6 +26,47 @@ namespace MediaBrowser.Common.ScheduledTasks
protected TKernelType Kernel { get; private set; }
/// <summary>
+ /// Gets the logger.
+ /// </summary>
+ /// <value>The logger.</value>
+ protected ILogger Logger { get; private set; }
+
+ /// <summary>
+ /// Gets the task manager.
+ /// </summary>
+ /// <value>The task manager.</value>
+ protected ITaskManager TaskManager { get; private set; }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="BaseScheduledTask{TKernelType}" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="taskManager">The task manager.</param>
+ /// <param name="logger">The logger.</param>
+ /// <exception cref="System.ArgumentNullException">kernel</exception>
+ protected BaseScheduledTask(TKernelType kernel, ITaskManager taskManager, ILogger logger)
+ {
+ if (kernel == null)
+ {
+ throw new ArgumentNullException("kernel");
+ }
+ if (taskManager == null)
+ {
+ throw new ArgumentNullException("taskManager");
+ }
+ if (logger == null)
+ {
+ throw new ArgumentNullException("logger");
+ }
+
+ Kernel = kernel;
+ TaskManager = taskManager;
+ Logger = logger;
+
+ ReloadTriggerEvents(true);
+ }
+
+ /// <summary>
/// The _last execution result
/// </summary>
private TaskResult _lastExecutionResult;
@@ -199,7 +240,7 @@ namespace MediaBrowser.Common.ScheduledTasks
try
{
return JsonSerializer.DeserializeFromFile<IEnumerable<TaskTriggerInfo>>(ConfigurationFilePath)
- .Select(t => ScheduledTaskHelpers.GetTrigger(t, Kernel))
+ .Select(ScheduledTaskHelpers.GetTrigger)
.ToList();
}
catch (IOException)
@@ -228,7 +269,7 @@ namespace MediaBrowser.Common.ScheduledTasks
_triggersInitialized = true;
- ReloadTriggerEvents();
+ ReloadTriggerEvents(false);
JsonSerializer.SerializeToFile(_triggers.Select(ScheduledTaskHelpers.GetTriggerInfo), ConfigurationFilePath);
}
@@ -291,28 +332,10 @@ namespace MediaBrowser.Common.ScheduledTasks
}
/// <summary>
- /// Gets the logger.
- /// </summary>
- /// <value>The logger.</value>
- protected ILogger Logger { get; private set; }
-
- /// <summary>
- /// Initializes the specified kernel.
- /// </summary>
- /// <param name="kernel">The kernel.</param>
- /// <param name="logger">The logger.</param>
- public void Initialize(IKernel kernel, ILogger logger)
- {
- Logger = logger;
-
- Kernel = (TKernelType)kernel;
- ReloadTriggerEvents();
- }
-
- /// <summary>
/// Reloads the trigger events.
/// </summary>
- private void ReloadTriggerEvents()
+ /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
+ private void ReloadTriggerEvents(bool isApplicationStartup)
{
foreach (var trigger in Triggers)
{
@@ -320,7 +343,7 @@ namespace MediaBrowser.Common.ScheduledTasks
trigger.Triggered -= trigger_Triggered;
trigger.Triggered += trigger_Triggered;
- trigger.Start();
+ trigger.Start(isApplicationStartup);
}
}
@@ -335,7 +358,7 @@ namespace MediaBrowser.Common.ScheduledTasks
Logger.Info("{0} fired for task: {1}", trigger.GetType().Name, Name);
- Kernel.TaskManager.QueueScheduledTask(this);
+ TaskManager.QueueScheduledTask(this);
}
/// <summary>
@@ -392,7 +415,7 @@ namespace MediaBrowser.Common.ScheduledTasks
CurrentCancellationTokenSource = null;
CurrentProgress = null;
- Kernel.TaskManager.OnTaskCompleted(this);
+ TaskManager.OnTaskCompleted(this);
}
/// <summary>
diff --git a/MediaBrowser.Common/ScheduledTasks/BaseTaskTrigger.cs b/MediaBrowser.Common/ScheduledTasks/BaseTaskTrigger.cs
index 5e60bb718..ed302ed39 100644
--- a/MediaBrowser.Common/ScheduledTasks/BaseTaskTrigger.cs
+++ b/MediaBrowser.Common/ScheduledTasks/BaseTaskTrigger.cs
@@ -27,13 +27,13 @@ namespace MediaBrowser.Common.ScheduledTasks
await Task.Delay(1000).ConfigureAwait(false);
- Start();
+ Start(false);
}
/// <summary>
/// Stars waiting for the trigger action
/// </summary>
- protected internal abstract void Start();
+ protected internal abstract void Start(bool isApplicationStartup);
/// <summary>
/// Stops waiting for the trigger action
diff --git a/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs b/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs
index c1cf1a9a3..fb749f77c 100644
--- a/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs
+++ b/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs
@@ -23,7 +23,8 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Stars waiting for the trigger action
/// </summary>
- protected internal override void Start()
+ /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
+ protected internal override void Start(bool isApplicationStartup)
{
DisposeTimer();
diff --git a/MediaBrowser.Common/ScheduledTasks/IScheduledTask.cs b/MediaBrowser.Common/ScheduledTasks/IScheduledTask.cs
index 95d1edf63..cba5fc5d0 100644
--- a/MediaBrowser.Common/ScheduledTasks/IScheduledTask.cs
+++ b/MediaBrowser.Common/ScheduledTasks/IScheduledTask.cs
@@ -1,6 +1,4 @@
-using MediaBrowser.Common.Kernel;
-using MediaBrowser.Model.Logging;
-using MediaBrowser.Model.Tasks;
+using MediaBrowser.Model.Tasks;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
@@ -74,13 +72,6 @@ namespace MediaBrowser.Common.ScheduledTasks
void Cancel();
/// <summary>
- /// Initializes the specified kernel.
- /// </summary>
- /// <param name="kernel">The kernel.</param>
- /// <param name="logger">The logger.</param>
- void Initialize(IKernel kernel, ILogger logger);
-
- /// <summary>
/// Cancels if running.
/// </summary>
void CancelIfRunning();
diff --git a/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs b/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs
new file mode 100644
index 000000000..430208869
--- /dev/null
+++ b/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+
+namespace MediaBrowser.Common.ScheduledTasks
+{
+ public interface ITaskManager : IDisposable
+ {
+ /// <summary>
+ /// Gets the list of Scheduled Tasks
+ /// </summary>
+ /// <value>The scheduled tasks.</value>
+ IScheduledTask[] ScheduledTasks { get; }
+
+ /// <summary>
+ /// Cancels if running and queue.
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ void CancelIfRunningAndQueue<T>()
+ where T : IScheduledTask;
+
+ /// <summary>
+ /// Queues the scheduled task.
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ void QueueScheduledTask<T>()
+ where T : IScheduledTask;
+
+ /// <summary>
+ /// Queues the scheduled task.
+ /// </summary>
+ /// <param name="task">The task.</param>
+ void QueueScheduledTask(IScheduledTask task);
+
+ /// <summary>
+ /// Adds the tasks.
+ /// </summary>
+ /// <param name="tasks">The tasks.</param>
+ void AddTasks(IEnumerable<IScheduledTask> tasks);
+
+ /// <summary>
+ /// Called when [task completed].
+ /// </summary>
+ /// <param name="task">The task.</param>
+ void OnTaskCompleted(IScheduledTask task);
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs b/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs
index 1ead484c8..759447b10 100644
--- a/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs
+++ b/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs
@@ -23,7 +23,8 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Stars waiting for the trigger action
/// </summary>
- protected internal override void Start()
+ /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
+ protected internal override void Start(bool isApplicationStartup)
{
DisposeTimer();
diff --git a/MediaBrowser.Common/ScheduledTasks/ScheduledTaskHelpers.cs b/MediaBrowser.Common/ScheduledTasks/ScheduledTaskHelpers.cs
index 95c4c6a66..9942da17f 100644
--- a/MediaBrowser.Common/ScheduledTasks/ScheduledTaskHelpers.cs
+++ b/MediaBrowser.Common/ScheduledTasks/ScheduledTaskHelpers.cs
@@ -78,11 +78,10 @@ namespace MediaBrowser.Common.ScheduledTasks
/// Converts a TaskTriggerInfo into a concrete BaseTaskTrigger
/// </summary>
/// <param name="info">The info.</param>
- /// <param name="kernel">The kernel.</param>
/// <returns>BaseTaskTrigger.</returns>
/// <exception cref="System.ArgumentNullException"></exception>
/// <exception cref="System.ArgumentException">Invalid trigger type: + info.Type</exception>
- public static BaseTaskTrigger GetTrigger(TaskTriggerInfo info, IKernel kernel)
+ public static BaseTaskTrigger GetTrigger(TaskTriggerInfo info)
{
if (info.Type.Equals(typeof(DailyTrigger).Name, StringComparison.OrdinalIgnoreCase))
{
@@ -144,7 +143,7 @@ namespace MediaBrowser.Common.ScheduledTasks
if (info.Type.Equals(typeof(StartupTrigger).Name, StringComparison.OrdinalIgnoreCase))
{
- return new StartupTrigger(kernel);
+ return new StartupTrigger();
}
throw new ArgumentException("Unrecognized trigger type: " + info.Type);
diff --git a/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs b/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs
index 84775924f..a254d2be9 100644
--- a/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs
+++ b/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs
@@ -1,6 +1,4 @@
-using MediaBrowser.Common.Kernel;
-using System;
-using System.Threading.Tasks;
+using System.Threading.Tasks;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -10,33 +8,17 @@ namespace MediaBrowser.Common.ScheduledTasks
public class StartupTrigger : BaseTaskTrigger
{
/// <summary>
- /// Gets the kernel.
- /// </summary>
- /// <value>The kernel.</value>
- protected IKernel Kernel { get; private set; }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="StartupTrigger" /> class.
- /// </summary>
- /// <param name="kernel">The kernel.</param>
- public StartupTrigger(IKernel kernel)
- {
- Kernel = kernel;
- }
-
- /// <summary>
/// Stars waiting for the trigger action
/// </summary>
- protected internal override void Start()
- {
- Kernel.ReloadCompleted += Kernel_ReloadCompleted;
- }
-
- async void Kernel_ReloadCompleted(object sender, EventArgs e)
+ /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
+ protected internal async override void Start(bool isApplicationStartup)
{
- await Task.Delay(2000).ConfigureAwait(false);
+ if (isApplicationStartup)
+ {
+ await Task.Delay(2000).ConfigureAwait(false);
- OnTriggered();
+ OnTriggered();
+ }
}
/// <summary>
@@ -44,7 +26,6 @@ namespace MediaBrowser.Common.ScheduledTasks
/// </summary>
protected internal override void Stop()
{
- Kernel.ReloadCompleted -= Kernel_ReloadCompleted;
}
}
}
diff --git a/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs b/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs
index 3075a8587..45d1fae8e 100644
--- a/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs
+++ b/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs
@@ -18,7 +18,8 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Stars waiting for the trigger action
/// </summary>
- protected internal override void Start()
+ /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
+ protected internal override void Start(bool isApplicationStartup)
{
switch (SystemEvent)
{
diff --git a/MediaBrowser.Common/ScheduledTasks/TaskManager.cs b/MediaBrowser.Common/ScheduledTasks/TaskManager.cs
index b71ab8161..946c42d2e 100644
--- a/MediaBrowser.Common/ScheduledTasks/TaskManager.cs
+++ b/MediaBrowser.Common/ScheduledTasks/TaskManager.cs
@@ -1,5 +1,4 @@
-using MediaBrowser.Common.Kernel;
-using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Tasks;
using System;
using System.Collections.Generic;
@@ -10,9 +9,15 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Class TaskManager
/// </summary>
- public class TaskManager : BaseManager<IKernel>
+ internal class TaskManager : ITaskManager
{
/// <summary>
+ /// Gets the list of Scheduled Tasks
+ /// </summary>
+ /// <value>The scheduled tasks.</value>
+ public IScheduledTask[] ScheduledTasks { get; private set; }
+
+ /// <summary>
/// The _task queue
/// </summary>
private readonly List<Type> _taskQueue = new List<Type>();
@@ -25,12 +30,17 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Initializes a new instance of the <see cref="TaskManager" /> class.
/// </summary>
- /// <param name="kernel">The kernel.</param>
/// <param name="logger">The logger.</param>
- public TaskManager(IKernel kernel, ILogger logger)
- : base(kernel)
+ public TaskManager(ILogger logger)
{
+ if (logger == null)
+ {
+ throw new ArgumentException("logger");
+ }
+
_logger = logger;
+
+ ScheduledTasks = new IScheduledTask[] {};
}
/// <summary>
@@ -40,7 +50,7 @@ namespace MediaBrowser.Common.ScheduledTasks
public void CancelIfRunningAndQueue<T>()
where T : IScheduledTask
{
- Kernel.ScheduledTasks.OfType<T>().First().CancelIfRunning();
+ ScheduledTasks.OfType<T>().First().CancelIfRunning();
QueueScheduledTask<T>();
}
@@ -51,7 +61,7 @@ namespace MediaBrowser.Common.ScheduledTasks
public void QueueScheduledTask<T>()
where T : IScheduledTask
{
- var scheduledTask = Kernel.ScheduledTasks.OfType<T>().First();
+ var scheduledTask = ScheduledTasks.OfType<T>().First();
QueueScheduledTask(scheduledTask);
}
@@ -64,7 +74,7 @@ namespace MediaBrowser.Common.ScheduledTasks
{
var type = task.GetType();
- var scheduledTask = Kernel.ScheduledTasks.First(t => t.GetType() == type);
+ var scheduledTask = ScheduledTasks.First(t => t.GetType() == type);
lock (_taskQueue)
{
@@ -91,7 +101,7 @@ namespace MediaBrowser.Common.ScheduledTasks
/// Called when [task completed].
/// </summary>
/// <param name="task">The task.</param>
- internal void OnTaskCompleted(IScheduledTask task)
+ public void OnTaskCompleted(IScheduledTask task)
{
// Execute queued tasks
lock (_taskQueue)
@@ -100,7 +110,7 @@ namespace MediaBrowser.Common.ScheduledTasks
foreach (var type in copy)
{
- var scheduledTask = Kernel.ScheduledTasks.First(t => t.GetType() == type);
+ var scheduledTask = ScheduledTasks.First(t => t.GetType() == type);
if (scheduledTask.State == TaskState.Idle)
{
@@ -111,5 +121,39 @@ namespace MediaBrowser.Common.ScheduledTasks
}
}
}
+
+ /// <summary>
+ /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+ /// </summary>
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+
+ /// <summary>
+ /// Releases unmanaged and - optionally - managed resources.
+ /// </summary>
+ /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
+ protected virtual void Dispose(bool dispose)
+ {
+ foreach (var task in ScheduledTasks)
+ {
+ task.Dispose();
+ }
+ }
+
+ /// <summary>
+ /// Adds the tasks.
+ /// </summary>
+ /// <param name="tasks">The tasks.</param>
+ public void AddTasks(IEnumerable<IScheduledTask> tasks)
+ {
+ var myTasks = ScheduledTasks.ToList();
+
+ myTasks.AddRange(tasks);
+
+ ScheduledTasks = myTasks.ToArray();
+ }
}
}
diff --git a/MediaBrowser.Common/ScheduledTasks/Tasks/DeleteCacheFileTask.cs b/MediaBrowser.Common/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
index 2a9bc4a0d..b06134ee2 100644
--- a/MediaBrowser.Common/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
+++ b/MediaBrowser.Common/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
@@ -1,8 +1,7 @@
using MediaBrowser.Common.Kernel;
-using MediaBrowser.Model.Tasks;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading;
@@ -13,10 +12,20 @@ namespace MediaBrowser.Common.ScheduledTasks.Tasks
/// <summary>
/// Deletes old cache files
/// </summary>
- [Export(typeof(IScheduledTask))]
public class DeleteCacheFileTask : BaseScheduledTask<IKernel>
{
/// <summary>
+ /// Initializes a new instance of the <see cref="DeleteCacheFileTask" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="taskManager">The task manager.</param>
+ /// <param name="logger">The logger.</param>
+ public DeleteCacheFileTask(IKernel kernel, ITaskManager taskManager, ILogger logger)
+ : base(kernel, taskManager, logger)
+ {
+ }
+
+ /// <summary>
/// Creates the triggers that define when the task will run
/// </summary>
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
diff --git a/MediaBrowser.Common/ScheduledTasks/Tasks/DeleteLogFileTask.cs b/MediaBrowser.Common/ScheduledTasks/Tasks/DeleteLogFileTask.cs
index a1068a263..0b243cb10 100644
--- a/MediaBrowser.Common/ScheduledTasks/Tasks/DeleteLogFileTask.cs
+++ b/MediaBrowser.Common/ScheduledTasks/Tasks/DeleteLogFileTask.cs
@@ -1,8 +1,7 @@
using MediaBrowser.Common.Kernel;
-using MediaBrowser.Model.Tasks;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading;
@@ -13,10 +12,20 @@ namespace MediaBrowser.Common.ScheduledTasks.Tasks
/// <summary>
/// Deletes old log files
/// </summary>
- [Export(typeof(IScheduledTask))]
public class DeleteLogFileTask : BaseScheduledTask<IKernel>
{
/// <summary>
+ /// Initializes a new instance of the <see cref="DeleteLogFileTask" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="taskManager">The task manager.</param>
+ /// <param name="logger">The logger.</param>
+ public DeleteLogFileTask(IKernel kernel, ITaskManager taskManager, ILogger logger)
+ : base(kernel, taskManager, logger)
+ {
+ }
+
+ /// <summary>
/// Creates the triggers that define when the task will run
/// </summary>
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
diff --git a/MediaBrowser.Common/ScheduledTasks/Tasks/ReloadLoggerTask.cs b/MediaBrowser.Common/ScheduledTasks/Tasks/ReloadLoggerTask.cs
index a4f06f205..35cbe98f1 100644
--- a/MediaBrowser.Common/ScheduledTasks/Tasks/ReloadLoggerTask.cs
+++ b/MediaBrowser.Common/ScheduledTasks/Tasks/ReloadLoggerTask.cs
@@ -1,8 +1,7 @@
using MediaBrowser.Common.Kernel;
-using MediaBrowser.Model.Tasks;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Threading;
using System.Threading.Tasks;
@@ -11,10 +10,20 @@ namespace MediaBrowser.Common.ScheduledTasks.Tasks
/// <summary>
/// Class ReloadLoggerFileTask
/// </summary>
- [Export(typeof(IScheduledTask))]
public class ReloadLoggerFileTask : BaseScheduledTask<IKernel>
{
/// <summary>
+ /// Initializes a new instance of the <see cref="ReloadLoggerFileTask" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="taskManager">The task manager.</param>
+ /// <param name="logger">The logger.</param>
+ public ReloadLoggerFileTask(IKernel kernel, ITaskManager taskManager, ILogger logger)
+ : base(kernel, taskManager, logger)
+ {
+ }
+
+ /// <summary>
/// Gets the default triggers.
/// </summary>
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
diff --git a/MediaBrowser.Common/ScheduledTasks/Tasks/SystemUpdateTask.cs b/MediaBrowser.Common/ScheduledTasks/Tasks/SystemUpdateTask.cs
index f9950424f..f02293a5e 100644
--- a/MediaBrowser.Common/ScheduledTasks/Tasks/SystemUpdateTask.cs
+++ b/MediaBrowser.Common/ScheduledTasks/Tasks/SystemUpdateTask.cs
@@ -1,7 +1,7 @@
using MediaBrowser.Common.Kernel;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Threading;
using System.Threading.Tasks;
@@ -10,7 +10,6 @@ namespace MediaBrowser.Common.ScheduledTasks.Tasks
/// <summary>
/// Plugin Update Task
/// </summary>
- [Export(typeof(IScheduledTask))]
public class SystemUpdateTask : BaseScheduledTask<IKernel>
{
/// <summary>
@@ -22,8 +21,11 @@ namespace MediaBrowser.Common.ScheduledTasks.Tasks
/// Initializes a new instance of the <see cref="SystemUpdateTask" /> class.
/// </summary>
/// <param name="appHost">The app host.</param>
- [ImportingConstructor]
- public SystemUpdateTask([Import("appHost")] IApplicationHost appHost)
+ /// <param name="taskManager">The task manager.</param>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="logger">The logger.</param>
+ public SystemUpdateTask(IApplicationHost appHost, ITaskManager taskManager, IKernel kernel, ILogger logger)
+ : base(kernel, taskManager, logger)
{
_appHost = appHost;
}
diff --git a/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs b/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs
index 136dc8b13..afeacc2b3 100644
--- a/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs
+++ b/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs
@@ -29,7 +29,8 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Stars waiting for the trigger action
/// </summary>
- protected internal override void Start()
+ /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
+ protected internal override void Start(bool isApplicationStartup)
{
DisposeTimer();
diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs
index 6a76e2125..5b7661dcf 100644
--- a/MediaBrowser.Controller/Entities/Movies/Movie.cs
+++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs
@@ -1,6 +1,7 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Win32;
+using MediaBrowser.Controller.IO;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs
index 140c90814..c80c59eaf 100644
--- a/MediaBrowser.Controller/Entities/TV/Season.cs
+++ b/MediaBrowser.Controller/Entities/TV/Season.cs
@@ -2,6 +2,7 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Win32;
+using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Localization;
using MediaBrowser.Model.Entities;
diff --git a/MediaBrowser.Controller/Entities/User.cs b/MediaBrowser.Controller/Entities/User.cs
index f27e8c689..426e7f18e 100644
--- a/MediaBrowser.Controller/Entities/User.cs
+++ b/MediaBrowser.Controller/Entities/User.cs
@@ -1,6 +1,7 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Serialization;
+using MediaBrowser.Controller.IO;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Tasks;
using System;
diff --git a/MediaBrowser.Controller/IO/DirectoryWatchers.cs b/MediaBrowser.Controller/IO/DirectoryWatchers.cs
index 62e1a6a36..06ce95ec9 100644
--- a/MediaBrowser.Controller/IO/DirectoryWatchers.cs
+++ b/MediaBrowser.Controller/IO/DirectoryWatchers.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Common.IO;
+using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.ScheduledTasks;
@@ -67,15 +68,26 @@ namespace MediaBrowser.Controller.IO
private ILogger Logger { get; set; }
/// <summary>
+ /// Gets or sets the task manager.
+ /// </summary>
+ /// <value>The task manager.</value>
+ private ITaskManager TaskManager { get; set; }
+
+ /// <summary>
/// Initializes a new instance of the <see cref="DirectoryWatchers" /> class.
/// </summary>
- public DirectoryWatchers(ILogger logger)
+ public DirectoryWatchers(ILogger logger, ITaskManager taskManager)
{
if (logger == null)
{
throw new ArgumentNullException("logger");
}
+ if (taskManager == null)
+ {
+ throw new ArgumentNullException("taskManager");
+ }
+ TaskManager = taskManager;
Logger = logger;
}
@@ -421,7 +433,7 @@ namespace MediaBrowser.Controller.IO
// If the root folder changed, run the library task so the user can see it
if (itemsToRefresh.Any(i => i is AggregateFolder))
{
- Kernel.Instance.TaskManager.CancelIfRunningAndQueue<RefreshMediaLibraryTask>();
+ TaskManager.CancelIfRunningAndQueue<RefreshMediaLibraryTask>();
return;
}
diff --git a/MediaBrowser.Common/IO/FileSystem.cs b/MediaBrowser.Controller/IO/FileSystem.cs
index 3d65167bd..c7b7c660b 100644
--- a/MediaBrowser.Common/IO/FileSystem.cs
+++ b/MediaBrowser.Controller/IO/FileSystem.cs
@@ -6,7 +6,7 @@ using System.IO;
using System.Runtime.InteropServices;
using System.Text;
-namespace MediaBrowser.Common.IO
+namespace MediaBrowser.Controller.IO
{
/// <summary>
/// Class FileSystem
diff --git a/MediaBrowser.Controller/IO/FileSystemManager.cs b/MediaBrowser.Controller/IO/FileSystemManager.cs
index 9b54bb9d8..611b402d8 100644
--- a/MediaBrowser.Controller/IO/FileSystemManager.cs
+++ b/MediaBrowser.Controller/IO/FileSystemManager.cs
@@ -1,5 +1,6 @@
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Kernel;
+using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Logging;
using System;
@@ -26,17 +27,18 @@ namespace MediaBrowser.Controller.IO
/// The _logger
/// </summary>
private readonly ILogger _logger;
-
+
/// <summary>
/// Initializes a new instance of the <see cref="FileSystemManager" /> class.
/// </summary>
/// <param name="kernel">The kernel.</param>
/// <param name="logger">The logger.</param>
- public FileSystemManager(Kernel kernel, ILogger logger)
+ /// <param name="taskManager">The task manager.</param>
+ public FileSystemManager(Kernel kernel, ILogger logger, ITaskManager taskManager)
: base(kernel)
{
_logger = logger;
- DirectoryWatchers = new DirectoryWatchers(logger);
+ DirectoryWatchers = new DirectoryWatchers(logger, taskManager);
}
/// <summary>
diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs
index ebf3e724d..21cfb5ddb 100644
--- a/MediaBrowser.Controller/Kernel.cs
+++ b/MediaBrowser.Controller/Kernel.cs
@@ -1,6 +1,4 @@
-using MediaBrowser.Common.IO;
-using MediaBrowser.Common.Kernel;
-using MediaBrowser.Common.Localization;
+using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.Plugins;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
@@ -17,14 +15,10 @@ using MediaBrowser.Controller.ScheduledTasks;
using MediaBrowser.Controller.Updates;
using MediaBrowser.Controller.Weather;
using MediaBrowser.Model.Configuration;
-using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging;
-using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.System;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
-using System.ComponentModel.Composition.Hosting;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -183,7 +177,6 @@ namespace MediaBrowser.Controller
/// Gets the list of Localized string files
/// </summary>
/// <value>The string files.</value>
- [ImportMany(typeof(LocalizedStringData))]
public IEnumerable<LocalizedStringData> StringFiles { get; private set; }
/// <summary>
@@ -208,7 +201,6 @@ namespace MediaBrowser.Controller
/// Gets the list of currently registered metadata prvoiders
/// </summary>
/// <value>The metadata providers enumerable.</value>
- [ImportMany(typeof(BaseMetadataProvider))]
public BaseMetadataProvider[] MetadataProviders { get; private set; }
/// <summary>
@@ -222,8 +214,7 @@ namespace MediaBrowser.Controller
/// Gets the list of currently registered entity resolvers
/// </summary>
/// <value>The entity resolvers enumerable.</value>
- [ImportMany(typeof(IBaseItemResolver))]
- internal IBaseItemResolver[] EntityResolvers { get; private set; }
+ internal IEnumerable<IBaseItemResolver> EntityResolvers { get; private set; }
/// <summary>
/// Gets the list of BasePluginFolders added by plugins
@@ -322,14 +313,11 @@ namespace MediaBrowser.Controller
/// <summary>
/// Composes the exported values.
/// </summary>
- /// <param name="container">The container.</param>
- protected override void RegisterExportedValues(CompositionContainer container)
+ protected override void RegisterExportedValues()
{
- container.ComposeExportedValue("kernel", this);
-
ApplicationHost.Register(this);
- base.RegisterExportedValues(container);
+ base.RegisterExportedValues();
}
/// <summary>
@@ -338,6 +326,15 @@ namespace MediaBrowser.Controller
/// <param name="allTypes">All types.</param>
protected override void FindParts(Type[] allTypes)
{
+ InstallationManager = (InstallationManager)ApplicationHost.CreateInstance(typeof(InstallationManager));
+ FFMpegManager = (FFMpegManager)ApplicationHost.CreateInstance(typeof(FFMpegManager));
+ LibraryManager = (LibraryManager)ApplicationHost.CreateInstance(typeof(LibraryManager));
+ UserManager = (UserManager)ApplicationHost.CreateInstance(typeof(UserManager));
+ ImageManager = (ImageManager)ApplicationHost.CreateInstance(typeof(ImageManager));
+ ProviderManager = (ProviderManager)ApplicationHost.CreateInstance(typeof(ProviderManager));
+ UserDataManager = (UserDataManager)ApplicationHost.CreateInstance(typeof(UserDataManager));
+ PluginSecurityManager = (PluginSecurityManager)ApplicationHost.CreateInstance(typeof(PluginSecurityManager));
+
base.FindParts(allTypes);
EntityResolutionIgnoreRules = GetExports<IResolutionIgnoreRule>(allTypes);
@@ -348,8 +345,11 @@ namespace MediaBrowser.Controller
WeatherProviders = GetExports<IWeatherProvider>(allTypes);
IntroProviders = GetExports<IIntroProvider>(allTypes);
PluginConfigurationPages = GetExports<IPluginConfigurationPage>(allTypes);
- ImageEnhancers = GetExports<IImageEnhancer>(allTypes);
+ ImageEnhancers = GetExports<IImageEnhancer>(allTypes).OrderBy(e => e.Priority).ToArray();
PluginFolderCreators = GetExports<IVirtualFolderCreator>(allTypes);
+ StringFiles = GetExports<LocalizedStringData>(allTypes);
+ EntityResolvers = GetExports<IBaseItemResolver>(allTypes).OrderBy(e => e.Priority).ToArray();
+ MetadataProviders = GetExports<BaseMetadataProvider>(allTypes).OrderBy(e => e.Priority).ToArray();
}
/// <summary>
@@ -365,14 +365,6 @@ namespace MediaBrowser.Controller
await base.ReloadInternal().ConfigureAwait(false);
ReloadResourcePools();
- InstallationManager = (InstallationManager)ApplicationHost.CreateInstance(typeof(InstallationManager));
- FFMpegManager = (FFMpegManager)ApplicationHost.CreateInstance(typeof(FFMpegManager));
- LibraryManager = (LibraryManager)ApplicationHost.CreateInstance(typeof(LibraryManager));
- UserManager = (UserManager)ApplicationHost.CreateInstance(typeof(UserManager));
- ImageManager = (ImageManager)ApplicationHost.CreateInstance(typeof(ImageManager));
- ProviderManager = (ProviderManager)ApplicationHost.CreateInstance(typeof(ProviderManager));
- UserDataManager = (UserDataManager)ApplicationHost.CreateInstance(typeof(UserDataManager));
- PluginSecurityManager = (PluginSecurityManager)ApplicationHost.CreateInstance(typeof(PluginSecurityManager));
ReloadFileSystemManager();
@@ -441,15 +433,6 @@ namespace MediaBrowser.Controller
DisplayPreferencesRepository = GetRepository(DisplayPreferencesRepositories, Configuration.DisplayPreferencesRepository);
var displayPreferencesRepoTask = DisplayPreferencesRepository.Initialize();
- // Sort the resolvers by priority
- EntityResolvers = EntityResolvers.OrderBy(e => e.Priority).ToArray();
-
- // Sort the providers by priority
- MetadataProviders = MetadataProviders.OrderBy(e => e.Priority).ToArray();
-
- // Sort the image processors by priority
- ImageEnhancers = ImageEnhancers.OrderBy(e => e.Priority).ToArray();
-
await Task.WhenAll(itemRepoTask, userRepoTask, userDataRepoTask, displayPreferencesRepoTask).ConfigureAwait(false);
}
@@ -488,7 +471,7 @@ namespace MediaBrowser.Controller
{
DisposeFileSystemManager();
- FileSystemManager = new FileSystemManager(this, Logger);
+ FileSystemManager = new FileSystemManager(this, Logger, TaskManager);
FileSystemManager.StartWatchers();
}
diff --git a/MediaBrowser.Controller/Library/ItemResolveArgs.cs b/MediaBrowser.Controller/Library/ItemResolveArgs.cs
index c95300f74..4d58af437 100644
--- a/MediaBrowser.Controller/Library/ItemResolveArgs.cs
+++ b/MediaBrowser.Controller/Library/ItemResolveArgs.cs
@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using MediaBrowser.Controller.IO;
namespace MediaBrowser.Controller.Library
{
diff --git a/MediaBrowser.Controller/Localization/BaseStrings.cs b/MediaBrowser.Controller/Localization/BaseStrings.cs
index c76df7c7c..22486d90d 100644
--- a/MediaBrowser.Controller/Localization/BaseStrings.cs
+++ b/MediaBrowser.Controller/Localization/BaseStrings.cs
@@ -1,9 +1,6 @@
-using MediaBrowser.Common.Localization;
-using System.ComponentModel.Composition;
-
+
namespace MediaBrowser.Controller.Localization
{
- [Export(typeof(LocalizedStringData))]
public class BaseStrings : LocalizedStringData
{
public BaseStrings()
diff --git a/MediaBrowser.Common/Localization/LocalizedStringData.cs b/MediaBrowser.Controller/Localization/LocalizedStringData.cs
index a507c7b6b..71200b8c8 100644
--- a/MediaBrowser.Common/Localization/LocalizedStringData.cs
+++ b/MediaBrowser.Controller/Localization/LocalizedStringData.cs
@@ -1,7 +1,7 @@
using System.IO;
using System.Xml.Serialization;
-namespace MediaBrowser.Common.Localization
+namespace MediaBrowser.Controller.Localization
{
/// <summary>
/// Class LocalizedStringData
diff --git a/MediaBrowser.Controller/Localization/LocalizedStrings.cs b/MediaBrowser.Controller/Localization/LocalizedStrings.cs
index 01b259591..6405be5f8 100644
--- a/MediaBrowser.Controller/Localization/LocalizedStrings.cs
+++ b/MediaBrowser.Controller/Localization/LocalizedStrings.cs
@@ -1,5 +1,4 @@
-using MediaBrowser.Common.Localization;
-using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Concurrent;
using System.Globalization;
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index f9765d852..213c30bac 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -64,7 +64,6 @@
<HintPath>..\packages\protobuf-net.2.0.0.621\lib\net40\protobuf-net.dll</HintPath>
</Reference>
<Reference Include="System" />
- <Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
@@ -108,6 +107,7 @@
<Compile Include="Entities\CollectionFolder.cs" />
<Compile Include="Entities\Year.cs" />
<Compile Include="Extensions\XmlExtensions.cs" />
+ <Compile Include="IO\FileSystem.cs" />
<Compile Include="IO\FileSystemManager.cs" />
<Compile Include="IO\NetworkShares.cs" />
<Compile Include="Library\ChildrenChangedEventArgs.cs" />
@@ -118,6 +118,7 @@
<Compile Include="Localization\AURatingsDictionary.cs" />
<Compile Include="Localization\BaseStrings.cs" />
<Compile Include="Localization\GBRatingsDictionary.cs" />
+ <Compile Include="Localization\LocalizedStringData.cs" />
<Compile Include="Localization\LocalizedStrings.cs" />
<Compile Include="Localization\NLRatingsDictionary.cs" />
<Compile Include="Localization\Ratings.cs" />
diff --git a/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs b/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs
index ab0f37b96..16b120ebd 100644
--- a/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs
+++ b/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -11,7 +10,6 @@ namespace MediaBrowser.Controller.Providers
/// <summary>
/// Provides metadata for Folders and all subclasses by parsing folder.xml
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class FolderProviderFromXml : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs
index 985876406..4c3250ff4 100644
--- a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs
+++ b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs
@@ -3,7 +3,6 @@ using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading;
@@ -14,7 +13,6 @@ namespace MediaBrowser.Controller.Providers
/// <summary>
/// Provides images for all types by looking for standard images - folder, backdrop, logo, etc.
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class ImageFromMediaLocationProvider : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/ImagesByNameProvider.cs b/MediaBrowser.Controller/Providers/ImagesByNameProvider.cs
index 114176e2c..fcc31a75e 100644
--- a/MediaBrowser.Controller/Providers/ImagesByNameProvider.cs
+++ b/MediaBrowser.Controller/Providers/ImagesByNameProvider.cs
@@ -1,9 +1,8 @@
-using System.Globalization;
-using MediaBrowser.Common.IO;
-using MediaBrowser.Common.Win32;
+using MediaBrowser.Common.Win32;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.IO;
using System;
-using System.ComponentModel.Composition;
+using System.Globalization;
using System.IO;
using System.Linq;
@@ -12,7 +11,6 @@ namespace MediaBrowser.Controller.Providers
/// <summary>
/// Provides images for generic types by looking for standard images in the IBN
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class ImagesByNameProvider : ImageFromMediaLocationProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs
index 523192d4e..907c692b8 100644
--- a/MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs
+++ b/MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -12,7 +11,6 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
/// <summary>
/// Uses ffmpeg to create video images
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class FFMpegAudioImageProvider : BaseFFMpegImageProvider<Audio>
{
diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs
index b884d6c2d..636454cd0 100644
--- a/MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs
+++ b/MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.Threading;
using System.Threading.Tasks;
@@ -11,7 +10,6 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
/// <summary>
/// Uses ffmpeg to create video images
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class FFMpegVideoImageProvider : BaseFFMpegImageProvider<Video>
{
/// <summary>
@@ -23,8 +21,7 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
/// Initializes a new instance of the <see cref="FFMpegVideoImageProvider" /> class.
/// </summary>
/// <param name="isoManager">The iso manager.</param>
- [ImportingConstructor]
- public FFMpegVideoImageProvider([Import("isoManager")] IIsoManager isoManager)
+ public FFMpegVideoImageProvider(IIsoManager isoManager)
{
_isoManager = isoManager;
}
diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs
index 49c829fff..01711d771 100644
--- a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs
+++ b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs
@@ -5,7 +5,6 @@ using MediaBrowser.Controller.MediaInfo;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -15,7 +14,6 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
/// <summary>
/// Extracts audio information using ffprobe
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class FFProbeAudioInfoProvider : BaseFFProbeProvider<Audio>
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs
index 58fda20bb..443d28b67 100644
--- a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs
+++ b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs
@@ -6,7 +6,6 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.MediaInfo;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading;
@@ -17,7 +16,6 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
/// <summary>
/// Extracts video information using ffprobe
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class FFProbeVideoInfoProvider : BaseFFProbeProvider<Video>
{
/// <summary>
@@ -43,8 +41,7 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
/// <param name="isoManager">The iso manager.</param>
/// <param name="blurayExaminer">The bluray examiner.</param>
/// <exception cref="System.ArgumentNullException">blurayExaminer</exception>
- [ImportingConstructor]
- public FFProbeVideoInfoProvider([Import("isoManager")] IIsoManager isoManager, [Import("blurayExaminer")] IBlurayExaminer blurayExaminer)
+ public FFProbeVideoInfoProvider(IIsoManager isoManager, IBlurayExaminer blurayExaminer)
: base()
{
if (blurayExaminer == null)
diff --git a/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs b/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs
index 38e547523..e833e4931 100644
--- a/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs
+++ b/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs
@@ -4,7 +4,6 @@ using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -15,7 +14,6 @@ namespace MediaBrowser.Controller.Providers.Movies
/// <summary>
/// Class FanArtMovieProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
class FanArtMovieProvider : FanartBaseProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs
index 2319e5cfa..72f8a3fc7 100644
--- a/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs
+++ b/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs
@@ -7,7 +7,6 @@ using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Net;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Globalization;
using System.IO;
using System.Linq;
@@ -29,7 +28,6 @@ namespace MediaBrowser.Controller.Providers.Movies
/// <summary>
/// Class MovieDbProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class MovieDbProvider : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs
index ad5f6626b..45079ddda 100644
--- a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs
+++ b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Common.Serialization;
using MediaBrowser.Controller.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -11,7 +10,6 @@ namespace MediaBrowser.Controller.Providers.Movies
/// <summary>
/// Class MovieProviderFromJson
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class MovieProviderFromJson : MovieDbProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs
index b180fa580..274930bc8 100644
--- a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs
+++ b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -11,7 +10,6 @@ namespace MediaBrowser.Controller.Providers.Movies
/// <summary>
/// Class MovieProviderFromXml
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class MovieProviderFromXml : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs b/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs
index 19a707be3..b4b4933e2 100644
--- a/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs
+++ b/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Common.Serialization;
using MediaBrowser.Controller.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -11,7 +10,6 @@ namespace MediaBrowser.Controller.Providers.Movies
/// <summary>
/// Class PersonProviderFromJson
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
class PersonProviderFromJson : TmdbPersonProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs b/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs
index 4cdfc5894..7b5d62fb0 100644
--- a/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs
+++ b/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs
@@ -4,7 +4,6 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Globalization;
using System.IO;
using System.Linq;
@@ -17,7 +16,6 @@ namespace MediaBrowser.Controller.Providers.Movies
/// <summary>
/// Class TmdbPersonProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class TmdbPersonProvider : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/SortNameProvider.cs b/MediaBrowser.Controller/Providers/SortNameProvider.cs
index 071732f3e..933b0c78c 100644
--- a/MediaBrowser.Controller/Providers/SortNameProvider.cs
+++ b/MediaBrowser.Controller/Providers/SortNameProvider.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.TV;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -11,7 +10,6 @@ namespace MediaBrowser.Controller.Providers
/// <summary>
/// Class SortNameProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class SortNameProvider : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs b/MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs
index a493ce746..c6210f74c 100644
--- a/MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs
+++ b/MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -12,7 +11,6 @@ namespace MediaBrowser.Controller.Providers.TV
/// <summary>
/// Class EpisodeImageFromMediaLocationProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class EpisodeImageFromMediaLocationProvider : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs b/MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs
index 08d0988eb..7a96e368c 100644
--- a/MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs
+++ b/MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -12,7 +11,6 @@ namespace MediaBrowser.Controller.Providers.TV
/// <summary>
/// Class EpisodeProviderFromXml
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class EpisodeProviderFromXml : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs b/MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs
index 2640e0482..05ab172a8 100644
--- a/MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs
+++ b/MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs
@@ -4,7 +4,6 @@ using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -12,7 +11,6 @@ using System.Xml;
namespace MediaBrowser.Controller.Providers.TV
{
- [Export(typeof(BaseMetadataProvider))]
class FanArtTVProvider : FanartBaseProvider
{
protected string FanArtBaseUrl = "http://api.fanart.tv/webservice/series/{0}/{1}/xml/all/1/1";
diff --git a/MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs b/MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs
index d1d931a62..b06598114 100644
--- a/MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs
+++ b/MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs
@@ -5,7 +5,6 @@ using MediaBrowser.Controller.Resolvers.TV;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading;
@@ -18,7 +17,6 @@ namespace MediaBrowser.Controller.Providers.TV
/// <summary>
/// Class RemoteEpisodeProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
class RemoteEpisodeProvider : BaseMetadataProvider
{
diff --git a/MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs b/MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs
index 277b6d891..3e7f6b1a2 100644
--- a/MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs
+++ b/MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs
@@ -5,7 +5,6 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -16,7 +15,6 @@ namespace MediaBrowser.Controller.Providers.TV
/// <summary>
/// Class RemoteSeasonProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
class RemoteSeasonProvider : BaseMetadataProvider
{
diff --git a/MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs b/MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs
index 985aa0262..b8941dbba 100644
--- a/MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs
+++ b/MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs
@@ -7,7 +7,6 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Net;
using System.Text;
@@ -20,7 +19,6 @@ namespace MediaBrowser.Controller.Providers.TV
/// <summary>
/// Class RemoteSeriesProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
class RemoteSeriesProvider : BaseMetadataProvider
{
diff --git a/MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs b/MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs
index c92841fb6..aa2cde28d 100644
--- a/MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs
+++ b/MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -12,7 +11,6 @@ namespace MediaBrowser.Controller.Providers.TV
/// <summary>
/// Class SeriesProviderFromXml
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class SeriesProviderFromXml : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Resolvers/Audio/AudioResolver.cs b/MediaBrowser.Controller/Resolvers/Audio/AudioResolver.cs
index f827bf047..6e1bbfbfe 100644
--- a/MediaBrowser.Controller/Resolvers/Audio/AudioResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/Audio/AudioResolver.cs
@@ -1,16 +1,26 @@
using MediaBrowser.Controller.Library;
-using System.ComponentModel.Composition;
namespace MediaBrowser.Controller.Resolvers.Audio
{
- [Export(typeof(IBaseItemResolver))]
+ /// <summary>
+ /// Class AudioResolver
+ /// </summary>
public class AudioResolver : BaseItemResolver<Entities.Audio.Audio>
{
+ /// <summary>
+ /// Gets the priority.
+ /// </summary>
+ /// <value>The priority.</value>
public override ResolverPriority Priority
{
get { return ResolverPriority.Last; }
}
-
+
+ /// <summary>
+ /// Resolves the specified args.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>Entities.Audio.Audio.</returns>
protected override Entities.Audio.Audio Resolve(ItemResolveArgs args)
{
// Return audio if the path is a file and has a matching extension
diff --git a/MediaBrowser.Controller/Resolvers/Audio/MusicAlbumResolver.cs b/MediaBrowser.Controller/Resolvers/Audio/MusicAlbumResolver.cs
index 8b2e49f31..d8d2c326d 100644
--- a/MediaBrowser.Controller/Resolvers/Audio/MusicAlbumResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/Audio/MusicAlbumResolver.cs
@@ -1,17 +1,27 @@
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
-using System.ComponentModel.Composition;
namespace MediaBrowser.Controller.Resolvers.Audio
{
- [Export(typeof(IBaseItemResolver))]
+ /// <summary>
+ /// Class MusicAlbumResolver
+ /// </summary>
public class MusicAlbumResolver : BaseItemResolver<MusicAlbum>
{
+ /// <summary>
+ /// Gets the priority.
+ /// </summary>
+ /// <value>The priority.</value>
public override ResolverPriority Priority
{
get { return ResolverPriority.Third; } // we need to be ahead of the generic folder resolver but behind the movie one
}
-
+
+ /// <summary>
+ /// Resolves the specified args.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>MusicAlbum.</returns>
protected override MusicAlbum Resolve(ItemResolveArgs args)
{
if (!args.IsDirectory) return null;
diff --git a/MediaBrowser.Controller/Resolvers/Audio/MusicArtistResolver.cs b/MediaBrowser.Controller/Resolvers/Audio/MusicArtistResolver.cs
index 8060e8d33..45f96d3ab 100644
--- a/MediaBrowser.Controller/Resolvers/Audio/MusicArtistResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/Audio/MusicArtistResolver.cs
@@ -1,18 +1,28 @@
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
-using System.ComponentModel.Composition;
using System.Linq;
namespace MediaBrowser.Controller.Resolvers.Audio
{
- [Export(typeof(IBaseItemResolver))]
+ /// <summary>
+ /// Class MusicArtistResolver
+ /// </summary>
public class MusicArtistResolver : BaseItemResolver<MusicArtist>
{
+ /// <summary>
+ /// Gets the priority.
+ /// </summary>
+ /// <value>The priority.</value>
public override ResolverPriority Priority
{
get { return ResolverPriority.Third; } // we need to be ahead of the generic folder resolver but behind the movie one
}
+ /// <summary>
+ /// Resolves the specified args.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>MusicArtist.</returns>
protected override MusicArtist Resolve(ItemResolveArgs args)
{
if (!args.IsDirectory) return null;
diff --git a/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs b/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs
index d237f68f3..770b673a5 100644
--- a/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs
+++ b/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Library;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
namespace MediaBrowser.Controller.Resolvers
@@ -9,7 +8,6 @@ namespace MediaBrowser.Controller.Resolvers
/// <summary>
/// Provides the core resolver ignore rules
/// </summary>
- [Export(typeof(IResolutionIgnoreRule))]
public class CoreResolutionIgnoreRule : IResolutionIgnoreRule
{
/// <summary>
@@ -27,6 +25,11 @@ namespace MediaBrowser.Controller.Resolvers
"extrafanart"
};
+ /// <summary>
+ /// Shoulds the ignore.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
public bool ShouldIgnore(ItemResolveArgs args)
{
// Ignore hidden files and folders
diff --git a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
index 75e130526..f406cb185 100644
--- a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
+++ b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
@@ -1,6 +1,7 @@
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Win32;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Library;
using System;
using System.Collections.Generic;
diff --git a/MediaBrowser.Controller/Resolvers/FolderResolver.cs b/MediaBrowser.Controller/Resolvers/FolderResolver.cs
index e37c18692..c356b8c84 100644
--- a/MediaBrowser.Controller/Resolvers/FolderResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/FolderResolver.cs
@@ -1,13 +1,11 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
-using System.ComponentModel.Composition;
namespace MediaBrowser.Controller.Resolvers
{
/// <summary>
/// Class FolderResolver
/// </summary>
- [Export(typeof(IBaseItemResolver))]
public class FolderResolver : BaseFolderResolver<Folder>
{
/// <summary>
diff --git a/MediaBrowser.Controller/Resolvers/LocalTrailerResolver.cs b/MediaBrowser.Controller/Resolvers/LocalTrailerResolver.cs
index c26b0ce37..a61e010b3 100644
--- a/MediaBrowser.Controller/Resolvers/LocalTrailerResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/LocalTrailerResolver.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using System;
-using System.ComponentModel.Composition;
using System.IO;
namespace MediaBrowser.Controller.Resolvers
@@ -9,7 +8,6 @@ namespace MediaBrowser.Controller.Resolvers
/// <summary>
/// Class LocalTrailerResolver
/// </summary>
- [Export(typeof(IBaseItemResolver))]
public class LocalTrailerResolver : BaseVideoResolver<Trailer>
{
/// <summary>
diff --git a/MediaBrowser.Controller/Resolvers/Movies/BoxSetResolver.cs b/MediaBrowser.Controller/Resolvers/Movies/BoxSetResolver.cs
index ccca0cfab..2eee2a98b 100644
--- a/MediaBrowser.Controller/Resolvers/Movies/BoxSetResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/Movies/BoxSetResolver.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Library;
using System;
-using System.ComponentModel.Composition;
using System.IO;
namespace MediaBrowser.Controller.Resolvers.Movies
@@ -9,7 +8,6 @@ namespace MediaBrowser.Controller.Resolvers.Movies
/// <summary>
/// Class BoxSetResolver
/// </summary>
- [Export(typeof(IBaseItemResolver))]
public class BoxSetResolver : BaseFolderResolver<BoxSet>
{
/// <summary>
diff --git a/MediaBrowser.Controller/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Controller/Resolvers/Movies/MovieResolver.cs
index 14f635747..9443221a3 100644
--- a/MediaBrowser.Controller/Resolvers/Movies/MovieResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/Movies/MovieResolver.cs
@@ -6,7 +6,6 @@ using MediaBrowser.Controller.Providers.Movies;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
namespace MediaBrowser.Controller.Resolvers.Movies
@@ -14,7 +13,6 @@ namespace MediaBrowser.Controller.Resolvers.Movies
/// <summary>
/// Class MovieResolver
/// </summary>
- [Export(typeof(IBaseItemResolver))]
public class MovieResolver : BaseVideoResolver<Movie>
{
/// <summary>
diff --git a/MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs b/MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs
index f2f3ce122..d1789bcbb 100644
--- a/MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs
@@ -1,14 +1,20 @@
-using System;
-using MediaBrowser.Controller.Entities.TV;
+using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
-using System.ComponentModel.Composition;
using MediaBrowser.Model.Entities;
+using System;
namespace MediaBrowser.Controller.Resolvers.TV
{
- [Export(typeof(IBaseItemResolver))]
+ /// <summary>
+ /// Class EpisodeResolver
+ /// </summary>
public class EpisodeResolver : BaseVideoResolver<Episode>
{
+ /// <summary>
+ /// Resolves the specified args.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>Episode.</returns>
protected override Episode Resolve(ItemResolveArgs args)
{
// If the parent is a Season or Series, then this is an Episode if the VideoResolver returns something
@@ -40,6 +46,11 @@ namespace MediaBrowser.Controller.Resolvers.TV
return null;
}
+ /// <summary>
+ /// Sets the initial item values.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <param name="args">The args.</param>
protected override void SetInitialItemValues(Episode item, ItemResolveArgs args)
{
base.SetInitialItemValues(item, args);
diff --git a/MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs b/MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs
index 6569c85bc..9ea474207 100644
--- a/MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs
@@ -1,13 +1,19 @@
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using System;
-using System.ComponentModel.Composition;
namespace MediaBrowser.Controller.Resolvers.TV
{
- [Export(typeof(IBaseItemResolver))]
+ /// <summary>
+ /// Class SeasonResolver
+ /// </summary>
public class SeasonResolver : BaseFolderResolver<Season>
{
+ /// <summary>
+ /// Resolves the specified args.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>Season.</returns>
protected override Season Resolve(ItemResolveArgs args)
{
if (args.Parent is Series && args.IsDirectory)
@@ -21,6 +27,11 @@ namespace MediaBrowser.Controller.Resolvers.TV
return null;
}
+ /// <summary>
+ /// Sets the initial item values.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <param name="args">The args.</param>
protected override void SetInitialItemValues(Season item, ItemResolveArgs args)
{
base.SetInitialItemValues(item, args);
diff --git a/MediaBrowser.Controller/Resolvers/TV/SeriesResolver.cs b/MediaBrowser.Controller/Resolvers/TV/SeriesResolver.cs
index 7c0bc3df1..c973cfe87 100644
--- a/MediaBrowser.Controller/Resolvers/TV/SeriesResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/TV/SeriesResolver.cs
@@ -3,7 +3,6 @@ using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
namespace MediaBrowser.Controller.Resolvers.TV
@@ -11,7 +10,6 @@ namespace MediaBrowser.Controller.Resolvers.TV
/// <summary>
/// Class SeriesResolver
/// </summary>
- [Export(typeof(IBaseItemResolver))]
public class SeriesResolver : BaseFolderResolver<Series>
{
/// <summary>
diff --git a/MediaBrowser.Controller/Resolvers/VideoResolver.cs b/MediaBrowser.Controller/Resolvers/VideoResolver.cs
index bfb364349..5f2f8d954 100644
--- a/MediaBrowser.Controller/Resolvers/VideoResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/VideoResolver.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
namespace MediaBrowser.Controller.Resolvers
@@ -10,7 +9,6 @@ namespace MediaBrowser.Controller.Resolvers
/// <summary>
/// Resolves a Path into a Video
/// </summary>
- [Export(typeof(IBaseItemResolver))]
public class VideoResolver : BaseVideoResolver<Video>
{
/// <summary>
diff --git a/MediaBrowser.Controller/ScheduledTasks/ChapterImagesTask.cs b/MediaBrowser.Controller/ScheduledTasks/ChapterImagesTask.cs
index d3d30ed77..1a64bb853 100644
--- a/MediaBrowser.Controller/ScheduledTasks/ChapterImagesTask.cs
+++ b/MediaBrowser.Controller/ScheduledTasks/ChapterImagesTask.cs
@@ -1,19 +1,30 @@
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller.Entities;
-using MediaBrowser.Model.Tasks;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.ScheduledTasks
{
- [Export(typeof(IScheduledTask))]
+ /// <summary>
+ /// Class ChapterImagesTask
+ /// </summary>
class ChapterImagesTask : BaseScheduledTask<Kernel>
{
/// <summary>
+ /// Initializes a new instance of the <see cref="ChapterImagesTask" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="logger"></param>
+ public ChapterImagesTask(Kernel kernel, ITaskManager taskManager, ILogger logger)
+ : base(kernel, taskManager, logger)
+ {
+ }
+
+ /// <summary>
/// Creates the triggers that define when the task will run
/// </summary>
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
diff --git a/MediaBrowser.Controller/ScheduledTasks/ImageCleanupTask.cs b/MediaBrowser.Controller/ScheduledTasks/ImageCleanupTask.cs
index 57fc280de..8dd0895c9 100644
--- a/MediaBrowser.Controller/ScheduledTasks/ImageCleanupTask.cs
+++ b/MediaBrowser.Controller/ScheduledTasks/ImageCleanupTask.cs
@@ -1,11 +1,9 @@
-using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.ScheduledTasks;
+using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies;
-using MediaBrowser.Model.Tasks;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading;
@@ -16,10 +14,19 @@ namespace MediaBrowser.Controller.ScheduledTasks
/// <summary>
/// Class ImageCleanupTask
/// </summary>
- [Export(typeof(IScheduledTask))]
public class ImageCleanupTask : BaseScheduledTask<Kernel>
{
/// <summary>
+ /// Initializes a new instance of the <see cref="ImageCleanupTask" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="logger"></param>
+ public ImageCleanupTask(Kernel kernel, ITaskManager taskManager, ILogger logger)
+ : base(kernel, taskManager, logger)
+ {
+ }
+
+ /// <summary>
/// Creates the triggers that define when the task will run
/// </summary>
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
diff --git a/MediaBrowser.Controller/ScheduledTasks/PeopleValidationTask.cs b/MediaBrowser.Controller/ScheduledTasks/PeopleValidationTask.cs
index 2a91f0716..ee55ff2e9 100644
--- a/MediaBrowser.Controller/ScheduledTasks/PeopleValidationTask.cs
+++ b/MediaBrowser.Controller/ScheduledTasks/PeopleValidationTask.cs
@@ -1,7 +1,7 @@
using MediaBrowser.Common.ScheduledTasks;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Threading;
using System.Threading.Tasks;
@@ -10,10 +10,19 @@ namespace MediaBrowser.Controller.ScheduledTasks
/// <summary>
/// Class PeopleValidationTask
/// </summary>
- [Export(typeof(IScheduledTask))]
public class PeopleValidationTask : BaseScheduledTask<Kernel>
{
/// <summary>
+ /// Initializes a new instance of the <see cref="PeopleValidationTask" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="logger"></param>
+ public PeopleValidationTask(Kernel kernel, ITaskManager taskManager, ILogger logger)
+ : base(kernel, taskManager, logger)
+ {
+ }
+
+ /// <summary>
/// Creates the triggers that define when the task will run
/// </summary>
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
diff --git a/MediaBrowser.Controller/ScheduledTasks/PluginUpdateTask.cs b/MediaBrowser.Controller/ScheduledTasks/PluginUpdateTask.cs
index 3d79193d5..854c3b82f 100644
--- a/MediaBrowser.Controller/ScheduledTasks/PluginUpdateTask.cs
+++ b/MediaBrowser.Controller/ScheduledTasks/PluginUpdateTask.cs
@@ -1,9 +1,8 @@
using MediaBrowser.Common.ScheduledTasks;
+using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Net;
-using MediaBrowser.Model.Tasks;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading;
@@ -14,10 +13,19 @@ namespace MediaBrowser.Controller.ScheduledTasks
/// <summary>
/// Plugin Update Task
/// </summary>
- [Export(typeof(IScheduledTask))]
public class PluginUpdateTask : BaseScheduledTask<Kernel>
{
/// <summary>
+ /// Initializes a new instance of the <see cref="PluginUpdateTask" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="logger"></param>
+ public PluginUpdateTask(Kernel kernel, ITaskManager taskManager, ILogger logger)
+ : base(kernel, taskManager, logger)
+ {
+ }
+
+ /// <summary>
/// Creates the triggers that define when the task will run
/// </summary>
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
diff --git a/MediaBrowser.Controller/ScheduledTasks/RefreshMediaLibraryTask.cs b/MediaBrowser.Controller/ScheduledTasks/RefreshMediaLibraryTask.cs
index f0fcb8aba..76e60f2ef 100644
--- a/MediaBrowser.Controller/ScheduledTasks/RefreshMediaLibraryTask.cs
+++ b/MediaBrowser.Controller/ScheduledTasks/RefreshMediaLibraryTask.cs
@@ -1,8 +1,8 @@
using MediaBrowser.Common.ScheduledTasks;
+using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Tasks;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Threading;
using System.Threading.Tasks;
@@ -11,10 +11,19 @@ namespace MediaBrowser.Controller.ScheduledTasks
/// <summary>
/// Class RefreshMediaLibraryTask
/// </summary>
- [Export(typeof(IScheduledTask))]
public class RefreshMediaLibraryTask : BaseScheduledTask<Kernel>
{
/// <summary>
+ /// Initializes a new instance of the <see cref="RefreshMediaLibraryTask" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="logger"></param>
+ public RefreshMediaLibraryTask(Kernel kernel, ITaskManager taskManager, ILogger logger)
+ : base(kernel, taskManager, logger)
+ {
+ }
+
+ /// <summary>
/// Gets the default triggers.
/// </summary>
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
@@ -22,7 +31,7 @@ namespace MediaBrowser.Controller.ScheduledTasks
{
return new BaseTaskTrigger[] {
- new StartupTrigger(Kernel),
+ new StartupTrigger(),
new SystemEventTrigger{ SystemEvent = SystemEvent.WakeFromSleep},
diff --git a/MediaBrowser.Networking/MediaBrowser.Networking.csproj b/MediaBrowser.Networking/MediaBrowser.Networking.csproj
new file mode 100644
index 000000000..acd0d0146
--- /dev/null
+++ b/MediaBrowser.Networking/MediaBrowser.Networking.csproj
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{7C11010E-179A-49B7-BFB2-F1656F5E71AD}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>MediaBrowser.Networking</RootNamespace>
+ <AssemblyName>MediaBrowser.Networking</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="..\SharedVersion.cs">
+ <Link>Properties\SharedVersion.cs</Link>
+ </Compile>
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/MediaBrowser.Networking/Properties/AssemblyInfo.cs b/MediaBrowser.Networking/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..2eae67b6d
--- /dev/null
+++ b/MediaBrowser.Networking/Properties/AssemblyInfo.cs
@@ -0,0 +1,31 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("MediaBrowser.Networking")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("MediaBrowser.Networking")]
+[assembly: AssemblyCopyright("Copyright © 2013")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("01f56324-c175-4237-9204-aefda50bcf8d")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+// \ No newline at end of file
diff --git a/MediaBrowser.Plugins.DefaultTheme/MediaBrowser.Plugins.DefaultTheme.csproj b/MediaBrowser.Plugins.DefaultTheme/MediaBrowser.Plugins.DefaultTheme.csproj
index 0ba40e814..f0176049d 100644
--- a/MediaBrowser.Plugins.DefaultTheme/MediaBrowser.Plugins.DefaultTheme.csproj
+++ b/MediaBrowser.Plugins.DefaultTheme/MediaBrowser.Plugins.DefaultTheme.csproj
@@ -47,7 +47,6 @@
<HintPath>..\ThirdParty\Expression\Microsoft.Expression.Interactions.dll</HintPath>
</Reference>
<Reference Include="System" />
- <Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net" />
diff --git a/MediaBrowser.Plugins.DefaultTheme/Resources/AppResources.cs b/MediaBrowser.Plugins.DefaultTheme/Resources/AppResources.cs
index 81ed46217..3ca6e8df2 100644
--- a/MediaBrowser.Plugins.DefaultTheme/Resources/AppResources.cs
+++ b/MediaBrowser.Plugins.DefaultTheme/Resources/AppResources.cs
@@ -1,12 +1,11 @@
-using System.Threading.Tasks;
-using MediaBrowser.Model.Dto;
+using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Net;
using MediaBrowser.UI;
using MediaBrowser.UI.Controller;
using MediaBrowser.UI.Controls;
using MediaBrowser.UI.Playback;
using MediaBrowser.UI.Playback.InternalPlayer;
-using System.ComponentModel.Composition;
+using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
@@ -15,7 +14,6 @@ namespace MediaBrowser.Plugins.DefaultTheme.Resources
/// <summary>
/// Class AppResources
/// </summary>
- [Export(typeof(ResourceDictionary))]
public partial class AppResources : ResourceDictionary
{
/// <summary>
diff --git a/MediaBrowser.Plugins.DefaultTheme/Theme.cs b/MediaBrowser.Plugins.DefaultTheme/Theme.cs
index f8d6d8724..5a730cf08 100644
--- a/MediaBrowser.Plugins.DefaultTheme/Theme.cs
+++ b/MediaBrowser.Plugins.DefaultTheme/Theme.cs
@@ -4,7 +4,6 @@ using MediaBrowser.Plugins.DefaultTheme.Resources;
using MediaBrowser.UI;
using MediaBrowser.UI.Controller;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Windows;
using System.Windows.Controls;
@@ -13,7 +12,6 @@ namespace MediaBrowser.Plugins.DefaultTheme
/// <summary>
/// Class Theme
/// </summary>
- [Export(typeof(BaseTheme))]
class Theme : BaseTheme
{
/// <summary>
diff --git a/MediaBrowser.Server.WorldWeatherOnline/MediaBrowser.Server.WorldWeatherOnline.csproj b/MediaBrowser.Server.WorldWeatherOnline/MediaBrowser.Server.WorldWeatherOnline.csproj
index 98e973c15..0d47febed 100644
--- a/MediaBrowser.Server.WorldWeatherOnline/MediaBrowser.Server.WorldWeatherOnline.csproj
+++ b/MediaBrowser.Server.WorldWeatherOnline/MediaBrowser.Server.WorldWeatherOnline.csproj
@@ -34,7 +34,6 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
- <Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
diff --git a/MediaBrowser.Server.WorldWeatherOnline/WeatherProvider.cs b/MediaBrowser.Server.WorldWeatherOnline/WeatherProvider.cs
index 257249793..c30a30455 100644
--- a/MediaBrowser.Server.WorldWeatherOnline/WeatherProvider.cs
+++ b/MediaBrowser.Server.WorldWeatherOnline/WeatherProvider.cs
@@ -4,7 +4,6 @@ using MediaBrowser.Controller.Weather;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Weather;
using System;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -15,7 +14,6 @@ namespace MediaBrowser.Server.WorldWeatherOnline
/// Based on http://www.worldweatheronline.com/free-weather-feed.aspx
/// The classes in this file are a reproduction of the json output, which will then be converted to our weather model classes
/// </summary>
- [Export(typeof(IWeatherProvider))]
public class WeatherProvider : IWeatherProvider
{
/// <summary>
@@ -29,8 +27,7 @@ namespace MediaBrowser.Server.WorldWeatherOnline
/// </summary>
/// <param name="logger">The logger.</param>
/// <exception cref="System.ArgumentNullException">logger</exception>
- [ImportingConstructor]
- public WeatherProvider([Import("logger")] ILogger logger)
+ public WeatherProvider(ILogger logger)
{
if (logger == null)
{
diff --git a/MediaBrowser.ServerApplication/App.xaml.cs b/MediaBrowser.ServerApplication/App.xaml.cs
index fd296e213..492fef242 100644
--- a/MediaBrowser.ServerApplication/App.xaml.cs
+++ b/MediaBrowser.ServerApplication/App.xaml.cs
@@ -11,6 +11,7 @@ using MediaBrowser.Model.Updates;
using MediaBrowser.Server.Uninstall;
using MediaBrowser.ServerApplication.Implementations;
using Microsoft.Win32;
+using SimpleInjector;
using System;
using System.Diagnostics;
using System.IO;
@@ -22,7 +23,6 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
-using SimpleInjector;
namespace MediaBrowser.ServerApplication
{
@@ -130,6 +130,12 @@ namespace MediaBrowser.ServerApplication
}
/// <summary>
+ /// Gets or sets the iso manager.
+ /// </summary>
+ /// <value>The iso manager.</value>
+ private IIsoManager IsoManager { get; set; }
+
+ /// <summary>
/// Gets or sets a value indicating whether [last run at startup value].
/// </summary>
/// <value><c>null</c> if [last run at startup value] contains no value, <c>true</c> if [last run at startup value]; otherwise, <c>false</c>.</value>
@@ -182,18 +188,6 @@ namespace MediaBrowser.ServerApplication
}
/// <summary>
- /// Registers resources that classes will depend on
- /// </summary>
- private void RegisterResources()
- {
- Register(this);
- Register(Logger);
- Register<IIsoManager>(new PismoIsoManager(Logger));
- Register<IBlurayExaminer>(new BdInfoExaminer());
- Register<IZipClient>(new DotNetZipClient());
- }
-
- /// <summary>
/// Loads the kernel.
/// </summary>
protected async void LoadKernel()
@@ -510,6 +504,21 @@ namespace MediaBrowser.ServerApplication
}
/// <summary>
+ /// Registers resources that classes will depend on
+ /// </summary>
+ private void RegisterResources()
+ {
+ Register<IApplicationHost>(this);
+ Register(Logger);
+
+ IsoManager = new PismoIsoManager(Logger);
+
+ Register<IIsoManager>(IsoManager);
+ Register<IBlurayExaminer>(new BdInfoExaminer());
+ Register<IZipClient>(new DotNetZipClient());
+ }
+
+ /// <summary>
/// Creates an instance of type and resolves all constructor dependancies
/// </summary>
/// <param name="type">The type.</param>
@@ -544,9 +553,25 @@ namespace MediaBrowser.ServerApplication
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns>``0.</returns>
- public T Resolve<T>() where T : class
+ public T Resolve<T>()
{
return (T)_container.GetRegistration(typeof (T), true).GetInstance();
}
+
+ /// <summary>
+ /// Resolves this instance.
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <returns>``0.</returns>
+ public T TryResolve<T>()
+ {
+ var result = _container.GetRegistration(typeof (T), false);
+
+ if (result == null)
+ {
+ return default(T);
+ }
+ return (T)result.GetInstance();
+ }
}
}
diff --git a/MediaBrowser.UI/App.xaml.cs b/MediaBrowser.UI/App.xaml.cs
index b98ce8e6c..bcaa0529e 100644
--- a/MediaBrowser.UI/App.xaml.cs
+++ b/MediaBrowser.UI/App.xaml.cs
@@ -118,6 +118,17 @@ namespace MediaBrowser.UI
}
/// <summary>
+ /// The container
+ /// </summary>
+ private SimpleInjector.Container _container = new SimpleInjector.Container();
+
+ /// <summary>
+ /// Gets or sets the iso manager.
+ /// </summary>
+ /// <value>The iso manager.</value>
+ private IIsoManager IsoManager { get; set; }
+
+ /// <summary>
/// Gets the instance.
/// </summary>
/// <value>The instance.</value>
@@ -290,15 +301,6 @@ namespace MediaBrowser.UI
InitializeComponent();
}
-
- /// <summary>
- /// Instantiates the kernel.
- /// </summary>
- /// <returns>IKernel.</returns>
- protected IKernel InstantiateKernel()
- {
- return new UIKernel(this, new PismoIsoManager(Logger), Logger);
- }
/// <summary>
/// Instantiates the main window.
@@ -405,7 +407,9 @@ namespace MediaBrowser.UI
// Without this the app will shutdown after the splash screen closes
ShutdownMode = ShutdownMode.OnExplicitShutdown;
- Kernel = InstantiateKernel();
+ RegisterResources();
+
+ Kernel = new UIKernel(this, Logger);
try
{
@@ -614,7 +618,8 @@ namespace MediaBrowser.UI
{
try
{
- ServerConfiguration = await ApiClient.GetServerConfigurationAsync();
+ var b = Kernel;
+ //ServerConfiguration = await ApiClient.GetServerConfigurationAsync();
}
catch (HttpException ex)
{
@@ -1011,6 +1016,19 @@ namespace MediaBrowser.UI
}
/// <summary>
+ /// Registers resources that classes will depend on
+ /// </summary>
+ private void RegisterResources()
+ {
+ Register<IApplicationHost>(this);
+ Register(Logger);
+
+ IsoManager = new PismoIsoManager(Logger);
+
+ Register<IIsoManager>(IsoManager);
+ }
+
+ /// <summary>
/// Updates the application.
/// </summary>
/// <param name="cancellationToken">The cancellation token.</param>
@@ -1020,5 +1038,61 @@ namespace MediaBrowser.UI
{
return new ApplicationUpdater().UpdateApplication(cancellationToken, progress);
}
+
+ /// <summary>
+ /// Creates an instance of type and resolves all constructor dependancies
+ /// </summary>
+ /// <param name="type">The type.</param>
+ /// <returns>System.Object.</returns>
+ public object CreateInstance(Type type)
+ {
+ try
+ {
+ return _container.GetInstance(type);
+ }
+ catch
+ {
+ Logger.Error("Error creating {0}", type.Name);
+
+ throw;
+ }
+ }
+
+ /// <summary>
+ /// Registers the specified obj.
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="obj">The obj.</param>
+ public void Register<T>(T obj)
+ where T : class
+ {
+ _container.RegisterSingle(obj);
+ }
+
+ /// <summary>
+ /// Resolves this instance.
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <returns>``0.</returns>
+ public T Resolve<T>()
+ {
+ return (T)_container.GetRegistration(typeof(T), true).GetInstance();
+ }
+
+ /// <summary>
+ /// Resolves this instance.
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <returns>``0.</returns>
+ public T TryResolve<T>()
+ {
+ var result = _container.GetRegistration(typeof(T), false);
+
+ if (result == null)
+ {
+ return default(T);
+ }
+ return (T)result.GetInstance();
+ }
}
}
diff --git a/MediaBrowser.UI/Controller/UIKernel.cs b/MediaBrowser.UI/Controller/UIKernel.cs
index 1bed49cf9..118067140 100644
--- a/MediaBrowser.UI/Controller/UIKernel.cs
+++ b/MediaBrowser.UI/Controller/UIKernel.cs
@@ -1,5 +1,4 @@
using MediaBrowser.ApiInteraction;
-using MediaBrowser.Common.IO;
using MediaBrowser.Common.Kernel;
using MediaBrowser.Model.Connectivity;
using MediaBrowser.Model.Logging;
@@ -8,7 +7,6 @@ using MediaBrowser.UI.Configuration;
using MediaBrowser.UI.Playback;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Net;
using System.Net.Cache;
using System.Net.Http;
@@ -42,8 +40,8 @@ namespace MediaBrowser.UI.Controller
/// <summary>
/// Initializes a new instance of the <see cref="UIKernel" /> class.
/// </summary>
- public UIKernel(IApplicationHost appHost, IIsoManager isoManager, ILogger logger)
- : base(appHost, isoManager, logger)
+ public UIKernel(IApplicationHost appHost, ILogger logger)
+ : base(appHost, logger)
{
Instance = this;
}
@@ -52,14 +50,12 @@ namespace MediaBrowser.UI.Controller
/// Gets the media players.
/// </summary>
/// <value>The media players.</value>
- [ImportMany(typeof(BaseMediaPlayer))]
public IEnumerable<BaseMediaPlayer> MediaPlayers { get; private set; }
/// <summary>
/// Gets the list of currently loaded themes
/// </summary>
/// <value>The themes.</value>
- [ImportMany(typeof(BaseTheme))]
public IEnumerable<BaseTheme> Themes { get; private set; }
/// <summary>
@@ -132,14 +128,17 @@ namespace MediaBrowser.UI.Controller
}
/// <summary>
- /// Reloads the internal.
+ /// Finds the parts.
/// </summary>
- /// <returns>Task.</returns>
- protected override Task ReloadInternal()
+ /// <param name="allTypes">All types.</param>
+ protected override void FindParts(Type[] allTypes)
{
- PlaybackManager = new PlaybackManager(this, Logger);
+ PlaybackManager = (PlaybackManager)ApplicationHost.CreateInstance(typeof(PlaybackManager));
+
+ base.FindParts(allTypes);
- return base.ReloadInternal();
+ Themes = GetExports<BaseTheme>(allTypes);
+ MediaPlayers = GetExports<BaseMediaPlayer>(allTypes);
}
/// <summary>
diff --git a/MediaBrowser.UI/MediaBrowser.UI.csproj b/MediaBrowser.UI/MediaBrowser.UI.csproj
index 5601d7c48..1f8469cbc 100644
--- a/MediaBrowser.UI/MediaBrowser.UI.csproj
+++ b/MediaBrowser.UI/MediaBrowser.UI.csproj
@@ -5,7 +5,7 @@
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B5ECE1FB-618E-420B-9A99-8E972D76920A}</ProjectGuid>
- <OutputType>Library</OutputType>
+ <OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MediaBrowser.UI</RootNamespace>
<AssemblyName>MediaBrowser.UI</AssemblyName>
@@ -86,6 +86,10 @@
<PlatformTarget>x86</PlatformTarget>
<OutputPath>bin\x86\Release\</OutputPath>
</PropertyGroup>
+ <PropertyGroup />
+ <PropertyGroup>
+ <NoWin32Manifest>true</NoWin32Manifest>
+ </PropertyGroup>
<ItemGroup>
<Reference Include="Declarations">
<HintPath>..\ThirdParty\Taygeta\Declarations.dll</HintPath>
@@ -114,8 +118,10 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\protobuf-net.2.0.0.621\lib\net40\protobuf-net.dll</HintPath>
</Reference>
+ <Reference Include="SimpleInjector">
+ <HintPath>..\packages\SimpleInjector.2.0.0-beta5\lib\net40-client\SimpleInjector.dll</HintPath>
+ </Reference>
<Reference Include="System" />
- <Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net" />
diff --git a/MediaBrowser.UI/Playback/ExternalPlayer/GenericExternalPlayer.cs b/MediaBrowser.UI/Playback/ExternalPlayer/GenericExternalPlayer.cs
index 3efb28d22..915028050 100644
--- a/MediaBrowser.UI/Playback/ExternalPlayer/GenericExternalPlayer.cs
+++ b/MediaBrowser.UI/Playback/ExternalPlayer/GenericExternalPlayer.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Model.Dto;
-using System.ComponentModel.Composition;
using MediaBrowser.Model.Logging;
namespace MediaBrowser.UI.Playback.ExternalPlayer
@@ -7,11 +6,9 @@ namespace MediaBrowser.UI.Playback.ExternalPlayer
/// <summary>
/// Class GenericExternalPlayer
/// </summary>
- [Export(typeof(BaseMediaPlayer))]
public class GenericExternalPlayer : BaseExternalPlayer
{
- [ImportingConstructor]
- public GenericExternalPlayer([Import("logger")] ILogger logger)
+ public GenericExternalPlayer(ILogger logger)
: base(logger)
{
}
diff --git a/MediaBrowser.UI/Playback/NVlc/InternalMediaPlayerNVlc.cs b/MediaBrowser.UI/Playback/NVlc/InternalMediaPlayerNVlc.cs
index 7233eb64f..2d596655b 100644
--- a/MediaBrowser.UI/Playback/NVlc/InternalMediaPlayerNVlc.cs
+++ b/MediaBrowser.UI/Playback/NVlc/InternalMediaPlayerNVlc.cs
@@ -9,7 +9,6 @@ using MediaBrowser.UI.Configuration;
using MediaBrowser.UI.Playback.InternalPlayer;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Drawing;
using System.IO;
using System.Linq;
@@ -21,11 +20,9 @@ namespace MediaBrowser.UI.Playback.NVlc
/// <summary>
/// Class InternalMediaPlayer
/// </summary>
- [Export(typeof(BaseMediaPlayer))]
public class InternalMediaPlayerNVlc : BaseInternalMediaPlayer
{
- [ImportingConstructor]
- public InternalMediaPlayerNVlc([Import("logger")] ILogger logger)
+ public InternalMediaPlayerNVlc(ILogger logger)
: base(logger)
{
}
diff --git a/MediaBrowser.UI/packages.config b/MediaBrowser.UI/packages.config
index 14ccb1e02..3de1bc355 100644
--- a/MediaBrowser.UI/packages.config
+++ b/MediaBrowser.UI/packages.config
@@ -3,4 +3,5 @@
<package id="MahApps.Metro" version="0.10.1.21-ALPHA" targetFramework="net45" />
<package id="NLog" version="2.0.0.2000" targetFramework="net45" />
<package id="protobuf-net" version="2.0.0.621" targetFramework="net45" />
+ <package id="SimpleInjector" version="2.0.0-beta5" targetFramework="net45" />
</packages> \ No newline at end of file
diff --git a/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs b/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs
index 4b9c0bd10..9d42b10ae 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Common.Kernel;
+using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller;
using MediaBrowser.Model.Logging;
using System.ComponentModel.Composition;
@@ -27,15 +28,21 @@ namespace MediaBrowser.WebDashboard.Api
private readonly Kernel _kernel;
/// <summary>
+ /// Gets or sets the task manager.
+ /// </summary>
+ /// <value>The task manager.</value>
+ private readonly ITaskManager _taskManager;
+
+ /// <summary>
/// Initializes a new instance of the <see cref="DashboardInfoWebSocketListener" /> class.
/// </summary>
/// <param name="kernel">The kernel.</param>
/// <param name="logger">The logger.</param>
- [ImportingConstructor]
- public DashboardInfoWebSocketListener([Import("kernel")] Kernel kernel, [Import("logger")] ILogger logger)
+ public DashboardInfoWebSocketListener(Kernel kernel, ILogger logger, ITaskManager taskManager)
: base(logger)
{
_kernel = kernel;
+ _taskManager = taskManager;
}
/// <summary>
@@ -45,7 +52,7 @@ namespace MediaBrowser.WebDashboard.Api
/// <returns>Task{IEnumerable{TaskInfo}}.</returns>
protected override Task<DashboardInfo> GetDataToSend(object state)
{
- return Task.FromResult(DashboardService.GetDashboardInfo(_kernel, Logger));
+ return Task.FromResult(DashboardService.GetDashboardInfo(_kernel, Logger, _taskManager));
}
}
}
diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs
index 7bf5bbab7..aca931306 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardService.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs
@@ -79,6 +79,21 @@ namespace MediaBrowser.WebDashboard.Api
public class DashboardService : BaseRestService
{
/// <summary>
+ /// Gets or sets the task manager.
+ /// </summary>
+ /// <value>The task manager.</value>
+ private readonly ITaskManager _taskManager;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="DashboardService" /> class.
+ /// </summary>
+ /// <param name="taskManager">The task manager.</param>
+ public DashboardService(ITaskManager taskManager)
+ {
+ _taskManager = taskManager;
+ }
+
+ /// <summary>
/// Adds the routes.
/// </summary>
/// <param name="appHost">The app host.</param>
@@ -98,7 +113,7 @@ namespace MediaBrowser.WebDashboard.Api
{
var kernel = (Kernel)Kernel;
- return GetDashboardInfo(kernel, Logger);
+ return GetDashboardInfo(kernel, Logger, _taskManager);
}
/// <summary>
@@ -106,8 +121,9 @@ namespace MediaBrowser.WebDashboard.Api
/// </summary>
/// <param name="kernel">The kernel.</param>
/// <param name="logger">The logger.</param>
+ /// <param name="taskManager">The task manager.</param>
/// <returns>DashboardInfo.</returns>
- public static DashboardInfo GetDashboardInfo(Kernel kernel, ILogger logger)
+ public static DashboardInfo GetDashboardInfo(Kernel kernel, ILogger logger, ITaskManager taskManager)
{
var connections = kernel.UserManager.ActiveConnections.ToArray();
@@ -117,11 +133,11 @@ namespace MediaBrowser.WebDashboard.Api
{
SystemInfo = kernel.GetSystemInfo(),
- RunningTasks = kernel.ScheduledTasks.Where(i => i.State == TaskState.Running || i.State == TaskState.Cancelling)
+ RunningTasks = taskManager.ScheduledTasks.Where(i => i.State == TaskState.Running || i.State == TaskState.Cancelling)
.Select(ScheduledTaskHelpers.GetTaskInfo)
.ToArray(),
- ApplicationUpdateTaskId = kernel.ScheduledTasks.OfType<SystemUpdateTask>().First().Id,
+ ApplicationUpdateTaskId = taskManager.ScheduledTasks.OfType<SystemUpdateTask>().First().Id,
ActiveConnections = connections,
diff --git a/MediaBrowser.sln b/MediaBrowser.sln
index 902792c2e..9e009cd00 100644
--- a/MediaBrowser.sln
+++ b/MediaBrowser.sln
@@ -49,6 +49,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Logging.NLog",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.ClickOnce", "MediaBrowser.ClickOnce\MediaBrowser.ClickOnce.csproj", "{CC96BF3E-0BDA-4809-BC4B-BB6D418F4A84}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Networking", "MediaBrowser.Networking\MediaBrowser.Networking.csproj", "{7C11010E-179A-49B7-BFB2-F1656F5E71AD}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -318,6 +320,20 @@ Global
{CC96BF3E-0BDA-4809-BC4B-BB6D418F4A84}.Release|Win32.ActiveCfg = Release|Any CPU
{CC96BF3E-0BDA-4809-BC4B-BB6D418F4A84}.Release|x64.ActiveCfg = Release|Any CPU
{CC96BF3E-0BDA-4809-BC4B-BB6D418F4A84}.Release|x86.ActiveCfg = Release|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Release|Win32.ActiveCfg = Release|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Release|x64.ActiveCfg = Release|Any CPU
+ {7C11010E-179A-49B7-BFB2-F1656F5E71AD}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE