Ejemplo n.º 1
0
        /// <summary>
        /// Handles initialization of an IPlugin object for a given plugin type.
        /// </summary>
        protected IPlugin InitializePlugin(Type pluginType, string mongoDatabaseName, string postgresDatabaseName, IEnumerable <IPluginResponse> previousPluginResponses)
        {
            Log.InfoFormat("Initializing {0} plugin..", pluginType.Name);

            try
            {
                // Create plugin object.
                var plugin = (IPlugin)Activator.CreateInstance(pluginType);

                // Set database connections.
                plugin.MongoDatabase = mongoConnectionInfo.GetDatabase(mongoDatabaseName);
                plugin.OutputDatabaseConnectionFactory = postgresConnectionInfo.GetConnectionFactory(postgresDatabaseName);

                if (PluginLoader.IsPostExecutionPlugin(pluginType))
                {
                    IPostExecutionPlugin postExecutionPlugin = (IPostExecutionPlugin)plugin;
                    postExecutionPlugin.PluginResponses = previousPluginResponses;
                    return(postExecutionPlugin);
                }
                else
                {
                    return(plugin);
                }
            }
            catch (Exception ex)
            {
                throw new PluginInitializationException(ex.Message, ex);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Handles initialization of an IPlugin object for a given plugin type.
        /// </summary>
        /// <param name="pluginType">The type of the plugin.</param>
        /// <returns>Initialized IPlugin object for the given plugin type.</returns>
        protected IPlugin InitializePlugin(Type pluginType)
        {
            Log.InfoFormat("Initializing {0} plugin..", pluginType.Name);

            try
            {
                // Create plugin object.
                var plugin = (IPlugin)Activator.CreateInstance(pluginType);

                // Set database connections.
                plugin.MongoDatabase = mongoDatabase;
                plugin.OutputDatabaseConnectionFactory = outputDatabaseConnectionFactory;

                if (PluginLoader.IsPostExecutionPlugin(pluginType))
                {
                    IPostExecutionPlugin postExecutionPlugin = (IPostExecutionPlugin)plugin;
                    postExecutionPlugin.PluginResponses = logsharkRequest.RunContext.PluginResponses;
                    return(postExecutionPlugin);
                }
                else
                {
                    return(plugin);
                }
            }
            catch (Exception ex)
            {
                throw new PluginInitializationException(ex.Message, ex);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Handles initialization of an IPlugin object for a given plugin type.
        /// </summary>
        protected IPlugin InitializePlugin(Type pluginType, IPluginRequest pluginRequest, string mongoDatabaseName, string outputDatabaseName, IEnumerable <IPluginResponse> previousPluginResponses)
        {
            Log.InfoFormat("Initializing {0} plugin..", pluginType.Name);

            try
            {
                // For an explanation of these types and their composition, see https://gitlab.tableausoftware.com/product-troubleshooting-tools/Logshark-CLI/merge_requests/552#note_295479
                var plugin = (IPlugin)Activator.CreateInstance(pluginType, pluginRequest);

                if (PluginLoader.IsDatabasePersistencePlugin(pluginType))
                {
                    IDatabasePersistencePlugin dbPersistencePlugin = (IDatabasePersistencePlugin)plugin;

                    if (dbPersistencePlugin.IsDatabaseRequired && !postgresConnectionInfo.HasValue)
                    {
                        throw new PluginInitializationException(String.Format("Plugin {0} requires that an output database connection is configured", pluginType.Name));
                    }

                    postgresConnectionInfo.MatchSome(connection => dbPersistencePlugin.OutputDatabaseConnectionFactory = connection.GetConnectionFactory(outputDatabaseName));
                    plugin = dbPersistencePlugin;
                }

                if (PluginLoader.IsPostExecutionPlugin(pluginType))
                {
                    IPostExecutionPlugin postExecutionPlugin = (IPostExecutionPlugin)plugin;
                    postExecutionPlugin.PluginResponses = previousPluginResponses;
                    plugin = postExecutionPlugin;
                }

                return(plugin);
            }
            catch (Exception ex)
            {
                throw new PluginInitializationException(ex.Message, ex);
            }
        }