From 5d88dc857513344a4ecd1b337c1529250e5e2dfa Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Sun, 29 Jul 2012 11:19:25 -0400 Subject: Configuration and serialization improvements --- MediaBrowser.Common/Plugins/BasePlugin.cs | 61 +++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 15 deletions(-) (limited to 'MediaBrowser.Common/Plugins/BasePlugin.cs') diff --git a/MediaBrowser.Common/Plugins/BasePlugin.cs b/MediaBrowser.Common/Plugins/BasePlugin.cs index 3e10c4c9cf..61ecffc758 100644 --- a/MediaBrowser.Common/Plugins/BasePlugin.cs +++ b/MediaBrowser.Common/Plugins/BasePlugin.cs @@ -2,6 +2,7 @@ using System.IO; using MediaBrowser.Common.Json; using MediaBrowser.Model.Plugins; +using MediaBrowser.Common.Kernel; namespace MediaBrowser.Common.Plugins { @@ -23,31 +24,45 @@ namespace MediaBrowser.Common.Plugins } } - public override void ReloadConfiguration() + protected override Type ConfigurationType { - if (!File.Exists(ConfigurationPath)) - { - Configuration = new TConfigurationType(); - } - else - { - Configuration = JsonSerializer.DeserializeFromFile(ConfigurationPath); - Configuration.DateLastModified = File.GetLastWriteTime(ConfigurationPath); - } + get { return typeof(TConfigurationType); } } } /// /// Provides a common base class for all plugins /// - public abstract class BasePlugin + public abstract class BasePlugin : IDisposable { + /// + /// Gets or sets the plugin's current context + /// + public KernelContext Context { get; set; } + + /// + /// Gets the name of the plugin + /// public abstract string Name { get; } + /// + /// Gets the type of configuration this plugin uses + /// + protected abstract Type ConfigurationType { get; } + + /// + /// Gets or sets the path to the plugin's folder + /// public string Path { get; set; } + /// + /// Gets or sets the plugin version + /// public Version Version { get; set; } + /// + /// Gets or sets the current plugin configuration + /// public BasePluginConfiguration Configuration { get; protected set; } protected string ConfigurationPath @@ -85,15 +100,31 @@ namespace MediaBrowser.Common.Plugins } } - public abstract void ReloadConfiguration(); - - public virtual void InitInServer() + public void ReloadConfiguration() { + if (!File.Exists(ConfigurationPath)) + { + Configuration = Activator.CreateInstance(ConfigurationType) as BasePluginConfiguration; + } + else + { + Configuration = JsonSerializer.DeserializeFromFile(ConfigurationType, ConfigurationPath) as BasePluginConfiguration; + Configuration.DateLastModified = File.GetLastWriteTime(ConfigurationPath); + } } - public virtual void InitInUI() + /// + /// Starts the plugin. + /// + public virtual void Init() { } + /// + /// Disposes the plugins. Undos all actions performed during Init. + /// + public virtual void Dispose() + { + } } } -- cgit v1.2.3