From f4f2c42dadec7e54386cf6709039da39a88eb2b7 Mon Sep 17 00:00:00 2001 From: Gabriel Kliot Date: Thu, 26 Feb 2015 14:35:24 -0800 Subject: [PATCH 1/2] Minor tweaks to allow to programmatically configure providers. Basically, made one method public instead of internal plus protection against null ref in a couple of places. --- src/Orleans/Configuration/ProviderConfiguration.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Orleans/Configuration/ProviderConfiguration.cs b/src/Orleans/Configuration/ProviderConfiguration.cs index 558906412f7..0accecf04e6 100644 --- a/src/Orleans/Configuration/ProviderConfiguration.cs +++ b/src/Orleans/Configuration/ProviderConfiguration.cs @@ -140,11 +140,14 @@ internal static void LoadProviderConfigurations(XmlElement root, XmlNamespaceMan internal void SetProviderManager(IProviderManager manager) { this.providerManager = manager; - foreach (var child in childConfigurations) - child.SetProviderManager(manager); + if (childConfigurations != null) + { + foreach (var child in childConfigurations) + child.SetProviderManager(manager); + } } - internal void SetProperty(string key, string val) + public void SetProperty(string key, string val) { if (!properties.ContainsKey(key)) { @@ -177,7 +180,7 @@ public IList Children var list = new List(); - if (childConfigurations.Count == 0) + if (childConfigurations == null || childConfigurations.Count == 0) return list; // empty list foreach (var config in childConfigurations) From e5687638e970976a8a48578f5357980dd0c3af13 Mon Sep 17 00:00:00 2001 From: Gabriel Kliot Date: Thu, 26 Feb 2015 17:16:55 -0800 Subject: [PATCH 2/2] Switched to initializing childConfigurations to an empty list instead of null checks. --- .../Configuration/ProviderConfiguration.cs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/Orleans/Configuration/ProviderConfiguration.cs b/src/Orleans/Configuration/ProviderConfiguration.cs index 0accecf04e6..db69a92a534 100644 --- a/src/Orleans/Configuration/ProviderConfiguration.cs +++ b/src/Orleans/Configuration/ProviderConfiguration.cs @@ -36,7 +36,7 @@ namespace Orleans.Runtime.Configuration public class ProviderConfiguration : IProviderConfiguration { private IDictionary properties; - private IList childConfigurations; + private readonly IList childConfigurations; private IList childProviders; [NonSerialized] private IProviderManager providerManager; @@ -52,6 +52,7 @@ public class ProviderConfiguration : IProviderConfiguration internal ProviderConfiguration() { properties = new Dictionary(); + childConfigurations = new List(); } public ProviderConfiguration(IDictionary properties, string type, string name) @@ -59,6 +60,7 @@ public ProviderConfiguration(IDictionary properties, string type this.properties = properties; Type = type; Name = name; + childConfigurations = new List(); } // for testing purposes @@ -66,13 +68,12 @@ internal ProviderConfiguration(IDictionary properties, IList(); } // Load from an element with the format ... internal void Load(XmlElement child, IDictionary alreadyLoaded, XmlNamespaceManager nsManager) { - childConfigurations = new List(); - if (nsManager == null) { nsManager = new XmlNamespaceManager(new NameTable()); @@ -140,11 +141,8 @@ internal static void LoadProviderConfigurations(XmlElement root, XmlNamespaceMan internal void SetProviderManager(IProviderManager manager) { this.providerManager = manager; - if (childConfigurations != null) - { - foreach (var child in childConfigurations) - child.SetProviderManager(manager); - } + foreach (var child in childConfigurations) + child.SetProviderManager(manager); } public void SetProperty(string key, string val) @@ -180,7 +178,7 @@ public IList Children var list = new List(); - if (childConfigurations == null || childConfigurations.Count == 0) + if (childConfigurations.Count == 0) return list; // empty list foreach (var config in childConfigurations)