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; } } }