diff options
| -rw-r--r-- | MediaBrowser.Controller/Kernel.cs | 18 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/DisplayPreferencesManager.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.ServerApplication/ApplicationHost.cs | 33 |
3 files changed, 43 insertions, 22 deletions
diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index 51d347caf..36ebcd802 100644 --- a/MediaBrowser.Controller/Kernel.cs +++ b/MediaBrowser.Controller/Kernel.cs @@ -89,12 +89,6 @@ namespace MediaBrowser.Controller public IUserRepository UserRepository { get; set; } /// <summary> - /// Gets the active user repository - /// </summary> - /// <value>The display preferences repository.</value> - public IDisplayPreferencesRepository DisplayPreferencesRepository { get; set; } - - /// <summary> /// Gets the list of available item repositories /// </summary> /// <value>The item repositories.</value> @@ -107,12 +101,6 @@ namespace MediaBrowser.Controller public IItemRepository ItemRepository { get; set; } /// <summary> - /// Gets the list of available DisplayPreferencesRepositories - /// </summary> - /// <value>The display preferences repositories.</value> - public IEnumerable<IDisplayPreferencesRepository> DisplayPreferencesRepositories { get; set; } - - /// <summary> /// Gets the list of available item repositories /// </summary> /// <value>The user data repositories.</value> @@ -155,11 +143,7 @@ namespace MediaBrowser.Controller UserDataRepository = GetRepository(UserDataRepositories, configurationManager.Configuration.UserDataRepository); var userDataRepoTask = UserDataRepository.Initialize(); - // Get the current display preferences repository - DisplayPreferencesRepository = GetRepository(DisplayPreferencesRepositories, configurationManager.Configuration.DisplayPreferencesRepository); - var displayPreferencesRepoTask = DisplayPreferencesRepository.Initialize(); - - return Task.WhenAll(itemRepoTask, userRepoTask, userDataRepoTask, displayPreferencesRepoTask); + return Task.WhenAll(itemRepoTask, userRepoTask, userDataRepoTask); } /// <summary> diff --git a/MediaBrowser.Server.Implementations/Library/DisplayPreferencesManager.cs b/MediaBrowser.Server.Implementations/Library/DisplayPreferencesManager.cs index a8e51a75b..57a9c9d78 100644 --- a/MediaBrowser.Server.Implementations/Library/DisplayPreferencesManager.cs +++ b/MediaBrowser.Server.Implementations/Library/DisplayPreferencesManager.cs @@ -1,5 +1,5 @@ -using MediaBrowser.Controller; -using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; @@ -25,6 +25,12 @@ namespace MediaBrowser.Server.Implementations.Library private readonly ConcurrentDictionary<Guid, Task<DisplayPreferences>> _displayPreferences = new ConcurrentDictionary<Guid, Task<DisplayPreferences>>(); /// <summary> + /// Gets the active user repository + /// </summary> + /// <value>The display preferences repository.</value> + public IDisplayPreferencesRepository Repository { get; set; } + + /// <summary> /// Initializes a new instance of the <see cref="DisplayPreferencesManager"/> class. /// </summary> /// <param name="logger">The logger.</param> @@ -50,7 +56,7 @@ namespace MediaBrowser.Server.Implementations.Library /// <returns>DisplayPreferences.</returns> private async Task<DisplayPreferences> RetrieveDisplayPreferences(Guid displayPreferencesId) { - var displayPreferences = await Kernel.Instance.DisplayPreferencesRepository.GetDisplayPreferences(displayPreferencesId).ConfigureAwait(false); + var displayPreferences = await Repository.GetDisplayPreferences(displayPreferencesId).ConfigureAwait(false); return displayPreferences ?? new DisplayPreferences { Id = displayPreferencesId }; } @@ -74,7 +80,7 @@ namespace MediaBrowser.Server.Implementations.Library try { - await Kernel.Instance.DisplayPreferencesRepository.SaveDisplayPreferences(displayPreferences, + await Repository.SaveDisplayPreferences(displayPreferences, cancellationToken).ConfigureAwait(false); var newValue = Task.FromResult(displayPreferences); diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index c782eac18..7fef4935d 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -220,6 +220,7 @@ namespace MediaBrowser.ServerApplication RegisterSingleInstance<ILibrarySearchEngine>(() => new LuceneSearchEngine()); + await ConfigureRepositories().ConfigureAwait(false); SetKernelProperties(); SetStaticProperties(); } @@ -235,7 +236,6 @@ namespace MediaBrowser.ServerApplication Parallel.Invoke( () => ServerKernel.UserDataRepositories = GetExports<IUserDataRepository>(), () => ServerKernel.UserRepositories = GetExports<IUserRepository>(), - () => ServerKernel.DisplayPreferencesRepositories = GetExports<IDisplayPreferencesRepository>(), () => ServerKernel.ItemRepositories = GetExports<IItemRepository>(), () => ServerKernel.WeatherProviders = GetExports<IWeatherProvider>(), () => ServerKernel.ImageEnhancers = GetExports<IImageEnhancer>().OrderBy(e => e.Priority).ToArray(), @@ -244,6 +244,21 @@ namespace MediaBrowser.ServerApplication } /// <summary> + /// Configures the repositories. + /// </summary> + /// <returns>Task.</returns> + private async Task ConfigureRepositories() + { + var displayPreferencesRepositories = GetExports<IDisplayPreferencesRepository>(); + + var repo = GetRepository(displayPreferencesRepositories, ServerConfigurationManager.Configuration.DisplayPreferencesRepository); + + await repo.Initialize().ConfigureAwait(false); + + ((DisplayPreferencesManager)DisplayPreferencesManager).Repository = repo; + } + + /// <summary> /// Dirty hacks /// </summary> private void SetStaticProperties() @@ -456,5 +471,21 @@ namespace MediaBrowser.ServerApplication process.WaitForExit(); } } + + /// <summary> + /// Gets the repository. + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="repositories">The repositories.</param> + /// <param name="name">The name.</param> + /// <returns>``0.</returns> + private T GetRepository<T>(IEnumerable<T> repositories, string name) + where T : class, IRepository + { + var enumerable = repositories as T[] ?? repositories.ToArray(); + + return enumerable.FirstOrDefault(r => string.Equals(r.Name, name, StringComparison.OrdinalIgnoreCase)) ?? + enumerable.FirstOrDefault(); + } } } |
