From e5e39e8e56de7c4d6f0cadad579e9b20513f096d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 21 Dec 2014 00:57:06 -0500 Subject: add metadata editor info endpoint --- MediaBrowser.Common/Plugins/BasePlugin.cs | 38 +++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 10 deletions(-) (limited to 'MediaBrowser.Common/Plugins/BasePlugin.cs') diff --git a/MediaBrowser.Common/Plugins/BasePlugin.cs b/MediaBrowser.Common/Plugins/BasePlugin.cs index 6bbd69f04..1a536b4ff 100644 --- a/MediaBrowser.Common/Plugins/BasePlugin.cs +++ b/MediaBrowser.Common/Plugins/BasePlugin.cs @@ -164,11 +164,7 @@ namespace MediaBrowser.Common.Plugins /// /// The _configuration sync lock /// - private object _configurationSyncLock = new object(); - /// - /// The _configuration initialized - /// - private bool _configurationInitialized; + private readonly object _configurationSyncLock = new object(); /// /// The _configuration /// @@ -182,17 +178,39 @@ namespace MediaBrowser.Common.Plugins get { // Lazy load - LazyInitializer.EnsureInitialized(ref _configuration, ref _configurationInitialized, ref _configurationSyncLock, () => ConfigurationHelper.GetXmlConfiguration(ConfigurationType, ConfigurationFilePath, XmlSerializer) as TConfigurationType); + if (_configuration == null) + { + lock (_configurationSyncLock) + { + if (_configuration == null) + { + _configuration = LoadConfiguration(); + } + } + } return _configuration; } protected set { _configuration = value; + } + } - if (value == null) - { - _configurationInitialized = false; - } + private TConfigurationType LoadConfiguration() + { + var path = ConfigurationFilePath; + + try + { + return (TConfigurationType)XmlSerializer.DeserializeFromFile(typeof(TConfigurationType), path); + } + catch (FileNotFoundException) + { + return (TConfigurationType)Activator.CreateInstance(typeof(TConfigurationType)); + } + catch (Exception ex) + { + return (TConfigurationType)Activator.CreateInstance(typeof(TConfigurationType)); } } -- cgit v1.2.3