diff --git a/src/Microsoft.Framework.ConfigurationModel/Configuration.cs b/src/Microsoft.Framework.ConfigurationModel/Configuration.cs index be327955..956f8698 100644 --- a/src/Microsoft.Framework.ConfigurationModel/Configuration.cs +++ b/src/Microsoft.Framework.ConfigurationModel/Configuration.cs @@ -136,14 +136,29 @@ private KeyValuePair CreateConfigurationFocus(string pre new ConfigurationFocus(this, prefix + segment + Constants.KeyDelimiter)); } + /// + /// Adds a new configuration source. + /// + /// The configuration source to add. + /// The same configuration source. public IConfigurationSourceRoot Add(IConfigurationSource configurationSource) { - configurationSource.Load(); - return AddLoadedSource(configurationSource); + return Add(configurationSource, load: true); } - internal IConfigurationSourceRoot AddLoadedSource(IConfigurationSource configurationSource) + /// + /// Adds a new configuration source. + /// + /// The configuration source to add. + /// If true, the configuration source's method will be called. + /// The same configuration source. + /// This method is intended only for test scenarios. + public IConfigurationSourceRoot Add(IConfigurationSource configurationSource, bool load) { + if (load) + { + configurationSource.Load(); + } _sources.Add(configurationSource); return this; } diff --git a/src/Microsoft.Framework.ConfigurationModel/Properties/AssemblyInfo.cs b/src/Microsoft.Framework.ConfigurationModel/Properties/AssemblyInfo.cs index 3903ba73..8a785635 100644 --- a/src/Microsoft.Framework.ConfigurationModel/Properties/AssemblyInfo.cs +++ b/src/Microsoft.Framework.ConfigurationModel/Properties/AssemblyInfo.cs @@ -39,6 +39,5 @@ [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: InternalsVisibleTo("Microsoft.Framework.ConfigurationModel.Test")] -[assembly: InternalsVisibleTo("Microsoft.Framework.ConfigurationModel.Json.Test")] [assembly: NeutralResourcesLanguage("en-US")] [assembly: AssemblyMetadata("Serviceable", "True")] diff --git a/test/Microsoft.Framework.ConfigurationModel.Json.Test/ArrayTest.cs b/test/Microsoft.Framework.ConfigurationModel.Json.Test/ArrayTest.cs index 3c227272..44536efb 100644 --- a/test/Microsoft.Framework.ConfigurationModel.Json.Test/ArrayTest.cs +++ b/test/Microsoft.Framework.ConfigurationModel.Json.Test/ArrayTest.cs @@ -102,8 +102,8 @@ public void ImplicitArrayItemReplacement() jsonConfigSource2.Load(TestStreamHelpers.StringToStream(json2)); var config = new Configuration(); - config.AddLoadedSource(jsonConfigSource1); - config.AddLoadedSource(jsonConfigSource2); + config.Add(jsonConfigSource1, load: false); + config.Add(jsonConfigSource2, load: false); Assert.Equal(3, config.GetSubKeys("ip").Count()); Assert.Equal("15.16.17.18", config.Get("ip:0")); @@ -135,8 +135,8 @@ public void ExplicitArrayReplacement() jsonConfigSource2.Load(TestStreamHelpers.StringToStream(json2)); var config = new Configuration(); - config.AddLoadedSource(jsonConfigSource1); - config.AddLoadedSource(jsonConfigSource2); + config.Add(jsonConfigSource1, load: false); + config.Add(jsonConfigSource2, load: false); Assert.Equal(3, config.GetSubKeys("ip").Count()); Assert.Equal("1.2.3.4", config.Get("ip:0")); @@ -168,8 +168,8 @@ public void ArrayMerge() jsonConfigSource2.Load(TestStreamHelpers.StringToStream(json2)); var config = new Configuration(); - config.AddLoadedSource(jsonConfigSource1); - config.AddLoadedSource(jsonConfigSource2); + config.Add(jsonConfigSource1, load: false); + config.Add(jsonConfigSource2, load: false); Assert.Equal(4, config.GetSubKeys("ip").Count()); Assert.Equal("1.2.3.4", config.Get("ip:0")); @@ -193,7 +193,7 @@ public void ArraysAreKeptInFileOrder() jsonConfigSource.Load(TestStreamHelpers.StringToStream(json)); var config = new Configuration(); - config.AddLoadedSource(jsonConfigSource); + config.Add(jsonConfigSource, load: false); var subkey = config.GetSubKey("setting"); var indexSubkeys = subkey.GetSubKeys().ToArray(); @@ -222,7 +222,7 @@ public void PropertiesAreSortedByNumberOnlyFirst() jsonConfigSource.Load(TestStreamHelpers.StringToStream(json)); var config = new Configuration(); - config.AddLoadedSource(jsonConfigSource); + config.Add(jsonConfigSource, load: false); var subkey = config.GetSubKey("setting"); var indexSubkeys = subkey.GetSubKeys().ToArray(); diff --git a/test/Microsoft.Framework.ConfigurationModel.Json.Test/JsonConfigurationSourceTest.cs b/test/Microsoft.Framework.ConfigurationModel.Json.Test/JsonConfigurationSourceTest.cs index 918c7737..4d07e55d 100644 --- a/test/Microsoft.Framework.ConfigurationModel.Json.Test/JsonConfigurationSourceTest.cs +++ b/test/Microsoft.Framework.ConfigurationModel.Json.Test/JsonConfigurationSourceTest.cs @@ -3,6 +3,7 @@ using System; using System.IO; +using Microsoft.Framework.ConfigurationModel.Json; using Microsoft.Framework.ConfigurationModel.Test; using Newtonsoft.Json; using Xunit; diff --git a/test/Microsoft.Framework.ConfigurationModel.Test/ConfigurationTest.cs b/test/Microsoft.Framework.ConfigurationModel.Test/ConfigurationTest.cs index f14d0fee..18d92434 100644 --- a/test/Microsoft.Framework.ConfigurationModel.Test/ConfigurationTest.cs +++ b/test/Microsoft.Framework.ConfigurationModel.Test/ConfigurationTest.cs @@ -53,9 +53,9 @@ public void LoadAndCombineKeyValuePairsFromDifferentConfigurationSources() bool memRet1, memRet2, memRet3; // Act - config.AddLoadedSource(memConfigSrc1); - config.AddLoadedSource(memConfigSrc2); - config.AddLoadedSource(memConfigSrc3); + config.Add(memConfigSrc1, load: false); + config.Add(memConfigSrc2, load: false); + config.Add(memConfigSrc3, load: false); memRet1 = config.TryGet("mem1:keyinmem1", out memVal1); memRet2 = config.TryGet("Mem2:KeyInMem2", out memVal2); @@ -103,8 +103,8 @@ public void NewConfigurationSourceOverridesOldOneWhenKeyIsDuplicated() var config = new Configuration(); // Act - config.AddLoadedSource(memConfigSrc1); - config.AddLoadedSource(memConfigSrc2); + config.Add(memConfigSrc1, load: false); + config.Add(memConfigSrc2, load: false); // Assert Assert.Equal("ValueInMem2", config.Get("Key1:Key2")); @@ -124,9 +124,9 @@ public void SettingValueUpdatesAllConfigurationSources() var memConfigSrc3 = new MemoryConfigurationSource(dict); var config = new Configuration(); - config.AddLoadedSource(memConfigSrc1); - config.AddLoadedSource(memConfigSrc2); - config.AddLoadedSource(memConfigSrc3); + config.Add(memConfigSrc1, load: false); + config.Add(memConfigSrc2, load: false); + config.Add(memConfigSrc3, load: false); // Act config.Set("Key1", "NewValue1"); @@ -165,9 +165,9 @@ public void CanGetSubKey() var memConfigSrc3 = new MemoryConfigurationSource(dic3); var config = new Configuration(); - config.AddLoadedSource(memConfigSrc1); - config.AddLoadedSource(memConfigSrc2); - config.AddLoadedSource(memConfigSrc3); + config.Add(memConfigSrc1, load: false); + config.Add(memConfigSrc2, load: false); + config.Add(memConfigSrc3, load: false); string memVal1, memVal2, memVal3, memVal4, memVal5; bool memRet1, memRet2, memRet3, memRet4, memRet5; @@ -227,9 +227,9 @@ public void CanGetSubKeys() var memConfigSrc3 = new MemoryConfigurationSource(dic3); var config = new Configuration(); - config.AddLoadedSource(memConfigSrc1); - config.AddLoadedSource(memConfigSrc2); - config.AddLoadedSource(memConfigSrc3); + config.Add(memConfigSrc1, load: false); + config.Add(memConfigSrc2, load: false); + config.Add(memConfigSrc3, load: false); // Act var configFocusList = config.GetSubKeys("Data"); @@ -266,9 +266,9 @@ public void CanIterateWithGenericEnumerator() var config = new Configuration(); // Act - config.AddLoadedSource(memConfigSrc1); - config.AddLoadedSource(memConfigSrc2); - config.AddLoadedSource(memConfigSrc3); + config.Add(memConfigSrc1, load: false); + config.Add(memConfigSrc2, load: false); + config.Add(memConfigSrc3, load: false); // Assert var enumerator = config.Sources.GetEnumerator(); @@ -304,9 +304,9 @@ public void CanIterateAfterCastedToIEnumerable() var config = new Configuration(); // Act - config.AddLoadedSource(memConfigSrc1); - config.AddLoadedSource(memConfigSrc2); - config.AddLoadedSource(memConfigSrc3); + config.Add(memConfigSrc1, load: false); + config.Add(memConfigSrc2, load: false); + config.Add(memConfigSrc3, load: false); var enumerable = config as IEnumerable;