More Connects cleanup/fixing

This commit is contained in:
Mark McDowall
2013-10-12 19:46:36 -07:00
parent 27da44ba45
commit 25c5401a9d
9 changed files with 158 additions and 15 deletions

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using NLog;
using NzbDrone.Common.Composition;
using NzbDrone.Core.Lifecycle;
using NzbDrone.Core.Messaging.Events;
@@ -12,13 +13,18 @@ namespace NzbDrone.Core.ThingiProvider
where TProvider : IProvider
{
private readonly IProviderRepository<TProviderDefinition> _providerRepository;
private readonly IContainer _container;
private readonly Logger _logger;
private readonly List<TProvider> _providers;
protected ProviderFactory(IProviderRepository<TProviderDefinition> providerRepository, IEnumerable<TProvider> providers, Logger logger)
protected ProviderFactory(IProviderRepository<TProviderDefinition> providerRepository,
IEnumerable<TProvider> providers,
IContainer container,
Logger logger)
{
_providerRepository = providerRepository;
_container = container;
_providers = providers.ToList();
_logger = logger;
}
@@ -40,8 +46,7 @@ namespace NzbDrone.Core.ThingiProvider
public List<TProvider> GetAvailableProviders()
{
return All().Where(c => c.Settings.Validate().IsValid)
.Select(GetInstance).ToList();
return Active().Select(GetInstance).ToList();
}
public TProviderDefinition Get(int id)
@@ -67,7 +72,9 @@ namespace NzbDrone.Core.ThingiProvider
private TProvider GetInstance(TProviderDefinition definition)
{
var type = GetImplementation(definition);
var instance = (TProvider)Activator.CreateInstance(type);
//TODO: This doesn't work for things that have non-parameterless constructors
var instance = (TProvider)_container.Resolve(type);
instance.Definition = definition;
return instance;
}
@@ -90,6 +97,11 @@ namespace NzbDrone.Core.ThingiProvider
{
}
protected virtual List<TProviderDefinition> Active()
{
return All().Where(c => c.Settings.Validate().IsValid).ToList();
}
private void RemoveMissingImplementations()
{
var storedProvider = _providerRepository.All();