Beispiel #1
0
 /// <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;;
 }
Beispiel #2
0
 /// <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>();
 }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }