/// <summary> /// Initializes a new instance of the <see cref="CollectorsBox"/> class. /// </summary> /// <param name="globalSettingsProvider">The global settings provider Type.</param> /// <param name="globalSettingsProviderAssembly">The global settings provider assembly.</param> /// <param name="settingsProvider">The settings provider Type.</param> /// <param name="settingsProviderAssembly">The settings provider assembly.</param> /// <param name="indexDirectoryProvider">The indexDirectory provider Type.</param> /// <param name="indexDirectoryProviderAssembly">The indexDirectory provider assembly.</param> /// <param name="usersProviderCollector">The users provider collector.</param> /// <param name="themeProviderCollector">The theme provider collector.</param> /// <param name="pagesProviderCollector">The pages provider collector.</param> /// <param name="filesProviderCollector">The files provider collector.</param> /// <param name="formatterProviderCollector">The formatter provider collector.</param> public CollectorsBox(Type globalSettingsProvider, System.Reflection.Assembly globalSettingsProviderAssembly, Type settingsProvider, System.Reflection.Assembly settingsProviderAssembly, Type indexDirectoryProvider, System.Reflection.Assembly indexDirectoryProviderAssembly, ProviderCollector <IUsersStorageProviderV60> usersProviderCollector, ProviderCollector <IThemesStorageProviderV60> themeProviderCollector, ProviderCollector <IPagesStorageProviderV60> pagesProviderCollector, ProviderCollector <IFilesStorageProviderV60> filesProviderCollector, ProviderCollector <IFormatterProviderV50> formatterProviderCollector) { _globalSettingsProviderType = globalSettingsProvider; _globalSettingsProviderAssembly = globalSettingsProviderAssembly; _settingsProviderType = settingsProvider; _settingsProviderAssembly = settingsProviderAssembly; _settingsProvider = new Dictionary <string, ISettingsStorageProviderV60>(); _indexDirectoryProviderType = indexDirectoryProvider; _indexDirectoryProviderAssembly = indexDirectoryProviderAssembly; _indexDirectoryProvider = new Dictionary <string, IIndexDirectoryProviderV60>(); _usersProviderCollector = usersProviderCollector; _themesProviderCollector = themeProviderCollector; _pagesProviderCollector = pagesProviderCollector; _filesProviderCollector = filesProviderCollector; _formatterProviderCollector = formatterProviderCollector;; }
/// <summary> /// Initializes the collectors. /// </summary> public static void InitCollectors() { StorageProvidersConfigurations = new Dictionary <string, string>(); _usersProviderCollector = new ProviderCollector <IUsersStorageProviderV60>(); _pagesProviderCollector = new ProviderCollector <IPagesStorageProviderV60>(); _filesProviderCollector = new ProviderCollector <IFilesStorageProviderV60>(); _themeProviderCollector = new ProviderCollector <IThemesStorageProviderV60>(); _formatterProviderCollector = new ProviderCollector <IFormatterProviderV50>(); }
/// <summary> /// Clones this instance. /// </summary> /// <returns>A clone of this instance.</returns> public ProviderCollector <T> Clone() { ProviderCollector <T> ret = new ProviderCollector <T>(); foreach (var provider in assembliesDictionary) { ret.AddProvider(provider.Key, provider.Value); } return(ret); }
/// <summary> /// Tries to inizialize a provider. /// </summary> /// <typeparam name="T">The type of the provider, which must implement <b>IProvider</b>.</typeparam> /// <param name="instance">The provider instance to initialize.</param> /// <param name="collectorEnabled">The collector for enabled providers.</param> /// <param name="collectorDisabled">The collector for disabled providers.</param> private static void Initialize <T>(T instance, ProviderCollector <T> collectorEnabled, ProviderCollector <T> collectorDisabled) where T : class, IProviderV30 { if (collectorEnabled.GetProvider(instance.GetType( ).FullName) != null || collectorDisabled.GetProvider(instance.GetType( ).FullName) != null) { Log.LogEntry("Provider " + instance.Information.Name + " already in memory", EntryType.Warning, Log.SystemUsername); return; } bool enabled = !IsDisabled(instance.GetType( ).FullName); try { if (enabled) { instance.Init(Host.Instance, LoadConfiguration(instance.GetType( ).FullName)); } } catch (InvalidConfigurationException) { // Disable Provider enabled = false; Log.LogEntry("Unable to load provider " + instance.Information.Name + " (configuration rejected), disabling it", EntryType.Error, Log.SystemUsername); SaveStatus(instance.GetType( ).FullName, false); } catch { // Disable Provider enabled = false; Log.LogEntry("Unable to load provider " + instance.Information.Name + " (unknown error), disabling it", EntryType.Error, Log.SystemUsername); SaveStatus(instance.GetType( ).FullName, false); throw; // Exception is rethrown because it's not a normal condition } if (enabled) { collectorEnabled.AddProvider(instance); } else { collectorDisabled.AddProvider(instance); } // Verify constraints VerifyConstraints <T>(instance); Log.LogEntry("Provider " + instance.Information.Name + " loaded (" + (enabled ? "Enabled" : "Disabled") + ")", EntryType.General, Log.SystemUsername); }