using System;
using System.Collections.Generic;
using System.Threading;
using Umbraco.Core;
using Umbraco.Web.Routing;
namespace Umbraco.Web
{
///
/// Extension methods for the PluginTypeResolver
///
public static class PluginTypeResolverExtensions
{
private static IEnumerable _lookups;
private static readonly ReaderWriterLockSlim LookupsLocker = new ReaderWriterLockSlim();
///
/// Returns all available ILookup objects
///
///
///
internal static IEnumerable ResolveLookups(this PluginTypeResolver resolver)
{
if (_lookups == null)
{
using (new WriteLock(LookupsLocker))
{
var lookupTypes = resolver.TypeFinder.FindClassesOfType();
var lookups = new List();
foreach (var l in lookupTypes)
{
try
{
var typeInstance = Activator.CreateInstance(l) as IDocumentLookup;
lookups.Add(typeInstance);
}
catch (Exception ex)
{
//TODO: Need to fix logging so this doesn't bork if no SQL connection
//Log.Add(LogTypes.Error, -1, "Error loading ILookup: " + ex.ToString());
}
}
//set the global
_lookups = lookups;
}
}
return _lookups;
}
}
}