IGNITE-4902 .NET: Fix StartFromApplicationConfiguration() in ASP.NET
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ece49284 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ece49284 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ece49284 Branch: refs/heads/ignite-3477-master Commit: ece49284638f012c39c1dbf49147edf7650fb13f Parents: 9bb48ee Author: Pavel Tupitsyn <ptupit...@apache.org> Authored: Mon Apr 3 16:08:03 2017 +0300 Committer: Pavel Tupitsyn <ptupit...@apache.org> Committed: Mon Apr 3 16:08:03 2017 +0300 ---------------------------------------------------------------------- .../IgniteConfigurationSectionTest.cs | 7 ++++--- .../dotnet/Apache.Ignite.Core/Ignition.cs | 22 +++++++++----------- .../Impl/Common/IgniteHome.cs | 21 ++++++++++++------- 3 files changed, 28 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ece49284/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSectionTest.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSectionTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSectionTest.cs index fc43f46..b507cff 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSectionTest.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSectionTest.cs @@ -34,7 +34,8 @@ namespace Apache.Ignite.Core.Tests [Test] public void TestRead() { - var section = (IgniteConfigurationSection) ConfigurationManager.GetSection("igniteConfiguration"); + var section = (IgniteConfigurationSection) ConfigurationManager.GetSection( + Ignition.ConfigurationSectionName); Assert.AreEqual("myGrid1", section.IgniteConfiguration.IgniteInstanceName); Assert.AreEqual("cacheName", section.IgniteConfiguration.CacheConfiguration.Single().Name); @@ -48,7 +49,7 @@ namespace Apache.Ignite.Core.Tests { Environment.SetEnvironmentVariable(Classpath.EnvIgniteNativeTestClasspath, "true"); - using (var ignite = Ignition.StartFromApplicationConfiguration("igniteConfiguration")) + using (var ignite = Ignition.StartFromApplicationConfiguration(Ignition.ConfigurationSectionName)) { Assert.AreEqual("myGrid1", ignite.Name); Assert.IsNotNull(ignite.GetCache<int, int>("cacheName")); @@ -62,7 +63,7 @@ namespace Apache.Ignite.Core.Tests using (var ignite = Ignition.StartFromApplicationConfiguration()) { - Assert.IsTrue(ignite.Name.StartsWith("myGrid")); + Assert.AreEqual("myGrid1", ignite.Name); } using (var ignite = Ignition.StartFromApplicationConfiguration( http://git-wip-us.apache.org/repos/asf/ignite/blob/ece49284/modules/platforms/dotnet/Apache.Ignite.Core/Ignition.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Ignition.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Ignition.cs index f590794..13e3f61 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Ignition.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Ignition.cs @@ -53,6 +53,11 @@ namespace Apache.Ignite.Core /// </summary> public static class Ignition { + /// <summary> + /// Default configuration section name. + /// </summary> + public const string ConfigurationSectionName = "igniteConfiguration"; + /** */ private static readonly object SyncRoot = new object(); @@ -118,22 +123,15 @@ namespace Apache.Ignite.Core } /// <summary> - /// Reads <see cref="IgniteConfiguration"/> from first <see cref="IgniteConfigurationSection"/> in the - /// application configuration and starts Ignite. + /// Reads <see cref="IgniteConfiguration"/> from application configuration + /// <see cref="IgniteConfigurationSection"/> with <see cref="ConfigurationSectionName"/> + /// name and starts Ignite. /// </summary> /// <returns>Started Ignite.</returns> public static IIgnite StartFromApplicationConfiguration() { - var cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); - - var section = cfg.Sections.OfType<IgniteConfigurationSection>().FirstOrDefault(); - - if (section == null) - throw new ConfigurationErrorsException( - string.Format("Could not find {0} in current application configuration", - typeof(IgniteConfigurationSection).Name)); - - return Start(section.IgniteConfiguration); + // ReSharper disable once IntroduceOptionalParameters.Global + return StartFromApplicationConfiguration(ConfigurationSectionName); } /// <summary> http://git-wip-us.apache.org/repos/asf/ignite/blob/ece49284/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs index 08f6d84..0290095 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs @@ -108,13 +108,20 @@ namespace Apache.Ignite.Core.Impl.Common /// <returns>Value indicating whether specified dir looks like a Ignite home.</returns> private static bool IsIgniteHome(DirectoryInfo dir) { - return dir.Exists && - (dir.EnumerateDirectories().Count(x => x.Name == "examples" || x.Name == "bin") == 2 && - dir.EnumerateDirectories().Count(x => x.Name == "modules" || x.Name == "platforms") == 1) - || // NuGet home - (dir.EnumerateDirectories().Any(x => x.Name == "Libs") && - (dir.EnumerateFiles("Apache.Ignite.Core.dll").Any() || - dir.EnumerateFiles("Apache.Ignite.*.nupkg").Any())); + try + { + return dir.Exists && + (dir.EnumerateDirectories().Count(x => x.Name == "examples" || x.Name == "bin") == 2 && + dir.EnumerateDirectories().Count(x => x.Name == "modules" || x.Name == "platforms") == 1) + || // NuGet home + (dir.EnumerateDirectories().Any(x => x.Name == "Libs") && + (dir.EnumerateFiles("Apache.Ignite.Core.dll").Any() || + dir.EnumerateFiles("Apache.Ignite.*.nupkg").Any())); + } + catch (IOException) + { + return false; + } } } }