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