diff options
Diffstat (limited to 'MediaBrowser.Common/Plugins/BasePlugin.cs')
| -rw-r--r-- | MediaBrowser.Common/Plugins/BasePlugin.cs | 150 |
1 files changed, 75 insertions, 75 deletions
diff --git a/MediaBrowser.Common/Plugins/BasePlugin.cs b/MediaBrowser.Common/Plugins/BasePlugin.cs index 6ef891d66..b24d10ff1 100644 --- a/MediaBrowser.Common/Plugins/BasePlugin.cs +++ b/MediaBrowser.Common/Plugins/BasePlugin.cs @@ -1,4 +1,4 @@ -#pragma warning disable CS1591 +#pragma warning disable SA1402 using System; using System.IO; @@ -8,10 +8,13 @@ using MediaBrowser.Model.Serialization; namespace MediaBrowser.Common.Plugins { + /// <summary> + /// Provides a common base class for all plugins. + /// </summary> public abstract class BasePlugin : IPlugin, IPluginAssembly { /// <summary> - /// Gets the name of the plugin + /// Gets the name of the plugin. /// </summary> /// <value>The name.</value> public abstract string Name { get; } @@ -29,18 +32,24 @@ namespace MediaBrowser.Common.Plugins public virtual Guid Id { get; private set; } /// <summary> - /// Gets the plugin version + /// Gets the plugin version. /// </summary> /// <value>The version.</value> public Version Version { get; private set; } /// <summary> - /// Gets the path to the assembly file + /// Gets the path to the assembly file. /// </summary> /// <value>The assembly file path.</value> public string AssemblyFilePath { get; private set; } /// <summary> + /// Gets the full path to the data folder, where the plugin can store any miscellaneous files needed. + /// </summary> + /// <value>The data folder path.</value> + public string DataFolderPath { get; private set; } + + /// <summary> /// Gets the plugin info. /// </summary> /// <returns>PluginInfo.</returns> @@ -62,9 +71,9 @@ namespace MediaBrowser.Common.Plugins /// </summary> public virtual void OnUninstalling() { - } + /// <inheritdoc /> public void SetAttributes(string assemblyFilePath, string dataFolderPath, Version assemblyVersion) { AssemblyFilePath = assemblyFilePath; @@ -72,26 +81,49 @@ namespace MediaBrowser.Common.Plugins Version = assemblyVersion; } + /// <inheritdoc /> public void SetId(Guid assemblyId) { Id = assemblyId; } - - /// <summary> - /// Gets the full path to the data folder, where the plugin can store any miscellaneous files needed - /// </summary> - /// <value>The data folder path.</value> - public string DataFolderPath { get; private set; } } /// <summary> - /// Provides a common base class for all plugins + /// Provides a common base class for all plugins. /// </summary> /// <typeparam name="TConfigurationType">The type of the T configuration type.</typeparam> public abstract class BasePlugin<TConfigurationType> : BasePlugin, IHasPluginConfiguration where TConfigurationType : BasePluginConfiguration { /// <summary> + /// The configuration sync lock. + /// </summary> + private readonly object _configurationSyncLock = new object(); + + /// <summary> + /// The save lock. + /// </summary> + private readonly object _configurationSaveLock = new object(); + + private Action<string> _directoryCreateFn; + + /// <summary> + /// The configuration. + /// </summary> + private TConfigurationType _configuration; + + /// <summary> + /// Initializes a new instance of the <see cref="BasePlugin{TConfigurationType}" /> class. + /// </summary> + /// <param name="applicationPaths">The application paths.</param> + /// <param name="xmlSerializer">The XML serializer.</param> + protected BasePlugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer) + { + ApplicationPaths = applicationPaths; + XmlSerializer = xmlSerializer; + } + + /// <summary> /// Gets the application paths. /// </summary> /// <value>The application paths.</value> @@ -104,34 +136,19 @@ namespace MediaBrowser.Common.Plugins protected IXmlSerializer XmlSerializer { get; private set; } /// <summary> - /// Gets the type of configuration this plugin uses + /// Gets the type of configuration this plugin uses. /// </summary> /// <value>The type of the configuration.</value> public Type ConfigurationType => typeof(TConfigurationType); - private Action<string> _directoryCreateFn; - public void SetStartupInfo(Action<string> directoryCreateFn) - { - // hack alert, until the .net core transition is complete - _directoryCreateFn = directoryCreateFn; - } - /// <summary> - /// Gets the name the assembly file + /// Gets the name the assembly file. /// </summary> /// <value>The name of the assembly file.</value> protected string AssemblyFileName => Path.GetFileName(AssemblyFilePath); /// <summary> - /// The _configuration sync lock - /// </summary> - private readonly object _configurationSyncLock = new object(); - /// <summary> - /// The _configuration - /// </summary> - private TConfigurationType _configuration; - /// <summary> - /// Gets the plugin's configuration + /// Gets or sets the plugin's configuration. /// </summary> /// <value>The configuration.</value> public TConfigurationType Configuration @@ -149,55 +166,54 @@ namespace MediaBrowser.Common.Plugins } } } + return _configuration; } - protected set => _configuration = value; - } - private TConfigurationType LoadConfiguration() - { - var path = ConfigurationFilePath; - - try - { - return (TConfigurationType)XmlSerializer.DeserializeFromFile(typeof(TConfigurationType), path); - } - catch - { - return (TConfigurationType)Activator.CreateInstance(typeof(TConfigurationType)); - } + protected set => _configuration = value; } /// <summary> - /// Gets the name of the configuration file. Subclasses should override + /// Gets the name of the configuration file. Subclasses should override. /// </summary> /// <value>The name of the configuration file.</value> public virtual string ConfigurationFileName => Path.ChangeExtension(AssemblyFileName, ".xml"); /// <summary> - /// Gets the full path to the configuration file + /// Gets the full path to the configuration file. /// </summary> /// <value>The configuration file path.</value> public string ConfigurationFilePath => Path.Combine(ApplicationPaths.PluginConfigurationsPath, ConfigurationFileName); /// <summary> - /// Initializes a new instance of the <see cref="BasePlugin{TConfigurationType}" /> class. + /// Gets the plugin's configuration. /// </summary> - /// <param name="applicationPaths">The application paths.</param> - /// <param name="xmlSerializer">The XML serializer.</param> - protected BasePlugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer) + /// <value>The configuration.</value> + BasePluginConfiguration IHasPluginConfiguration.Configuration => Configuration; + + /// <inheritdoc /> + public void SetStartupInfo(Action<string> directoryCreateFn) { - ApplicationPaths = applicationPaths; - XmlSerializer = xmlSerializer; + // hack alert, until the .net core transition is complete + _directoryCreateFn = directoryCreateFn; } - /// <summary> - /// The _save lock - /// </summary> - private readonly object _configurationSaveLock = new object(); + private TConfigurationType LoadConfiguration() + { + var path = ConfigurationFilePath; + + try + { + return (TConfigurationType)XmlSerializer.DeserializeFromFile(typeof(TConfigurationType), path); + } + catch + { + return (TConfigurationType)Activator.CreateInstance(typeof(TConfigurationType)); + } + } /// <summary> - /// Saves the current configuration to the file system + /// Saves the current configuration to the file system. /// </summary> public virtual void SaveConfiguration() { @@ -209,12 +225,7 @@ namespace MediaBrowser.Common.Plugins } } - /// <summary> - /// Completely overwrites the current configuration with a new copy - /// Returns true or false indicating success or failure - /// </summary> - /// <param name="configuration">The configuration.</param> - /// <exception cref="ArgumentNullException">configuration</exception> + /// <inheritdoc /> public virtual void UpdateConfiguration(BasePluginConfiguration configuration) { if (configuration == null) @@ -227,12 +238,7 @@ namespace MediaBrowser.Common.Plugins SaveConfiguration(); } - /// <summary> - /// Gets the plugin's configuration - /// </summary> - /// <value>The configuration.</value> - BasePluginConfiguration IHasPluginConfiguration.Configuration => Configuration; - + /// <inheritdoc /> public override PluginInfo GetPluginInfo() { var info = base.GetPluginInfo(); @@ -242,10 +248,4 @@ namespace MediaBrowser.Common.Plugins return info; } } - - public interface IPluginAssembly - { - void SetAttributes(string assemblyFilePath, string dataFolderPath, Version assemblyVersion); - void SetId(Guid assemblyId); - } } |
