Skip to content

Commit 6402e58

Browse files
committed
Add SystemConfigurationManager that supports user provided Configuration
1 parent 2b2b4ba commit 6402e58

File tree

3 files changed

+33
-34
lines changed

3 files changed

+33
-34
lines changed

src/NHibernate.Test/TestsContext.cs

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.IO;
66
using log4net.Repository.Hierarchy;
77
using NHibernate.Cfg;
8-
using NHibernate.Cfg.ConfigurationSchema;
98
#endif
109

1110
namespace NHibernate.Test
@@ -26,7 +25,8 @@ public void RunBeforeAnyTests()
2625
//so we need to explicitly load the configuration
2726
if (ExecutingWithVsTest)
2827
{
29-
Settings.ConfigurationManager = new NetCoreConfigurationManager();
28+
var assemblyPath = Path.Combine(TestContext.CurrentContext.TestDirectory, Path.GetFileName(typeof(TestsContext).Assembly.Location));
29+
Settings.ConfigurationManager = new SystemConfigurationManager(ConfigurationManager.OpenExeConfiguration(assemblyPath));
3030
}
3131

3232
ConfigureLog4Net();
@@ -49,35 +49,6 @@ private static void ConfigureLog4Net()
4949
hierarchy.Root.AddAppender(consoleAppender);
5050
hierarchy.Configured = true;
5151
}
52-
53-
class NetCoreConfigurationManager : IConfigurationManager
54-
{
55-
private readonly System.Configuration.Configuration _configuration;
56-
57-
public NetCoreConfigurationManager()
58-
{
59-
var assemblyPath =
60-
Path.Combine(TestContext.CurrentContext.TestDirectory, Path.GetFileName(typeof(TestsContext).Assembly.Location));
61-
_configuration = ConfigurationManager.OpenExeConfiguration(assemblyPath);
62-
}
63-
64-
public IHibernateConfiguration GetConfiguration()
65-
{
66-
ConfigurationSection configurationSection = _configuration.GetSection(CfgXmlHelper.CfgSectionName);
67-
var xml = configurationSection?.SectionInformation.GetRawXml();
68-
return xml == null ? null : HibernateConfiguration.FromAppConfig(xml);
69-
}
70-
71-
public string GetNamedConnectionString(string name)
72-
{
73-
return _configuration.ConnectionStrings.ConnectionStrings[name]?.ConnectionString;
74-
}
75-
76-
public string GetAppSetting(string name)
77-
{
78-
return _configuration.AppSettings.Settings[name]?.Value;
79-
}
80-
}
8152
#endif
8253
}
8354
}

src/NHibernate/Cfg/IConfigurationManager.cs

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Configuration;
33
using System.Linq;
4+
using NHibernate.Cfg.ConfigurationSchema;
45

56
namespace NHibernate.Cfg
67
{
@@ -9,7 +10,7 @@ internal static class ConfigurationManagerExtensions
910
//TODO 6.0: Replace with GetAppSetting and document as possible breaking change all usages.
1011
internal static string GetAppSettingIgnoringCase(this IConfigurationManager config, string name)
1112
{
12-
if (!(config is SystemConfigurationManager))
13+
if (!(config is StaticSystemConfigurationManager))
1314
return config.GetAppSetting(name);
1415

1516
var key = ConfigurationManager.AppSettings.Keys.Cast<string>().FirstOrDefault(k => name.Equals(k, StringComparison.OrdinalIgnoreCase));
@@ -26,7 +27,34 @@ public interface IConfigurationManager
2627
string GetAppSetting(string name);
2728
}
2829

29-
class SystemConfigurationManager : IConfigurationManager
30+
public class SystemConfigurationManager : IConfigurationManager
31+
{
32+
private readonly System.Configuration.Configuration _configuration;
33+
34+
public SystemConfigurationManager(System.Configuration.Configuration configuration)
35+
{
36+
_configuration = configuration;
37+
}
38+
39+
public IHibernateConfiguration GetConfiguration()
40+
{
41+
ConfigurationSection configurationSection = _configuration.GetSection(CfgXmlHelper.CfgSectionName);
42+
var xml = configurationSection?.SectionInformation.GetRawXml();
43+
return xml == null ? null : HibernateConfiguration.FromAppConfig(xml);
44+
}
45+
46+
public string GetNamedConnectionString(string name)
47+
{
48+
return _configuration.ConnectionStrings.ConnectionStrings[name]?.ConnectionString;
49+
}
50+
51+
public string GetAppSetting(string name)
52+
{
53+
return _configuration.AppSettings.Settings[name]?.Value;
54+
}
55+
}
56+
57+
class StaticSystemConfigurationManager : IConfigurationManager
3058
{
3159
public IHibernateConfiguration GetConfiguration()
3260
{

src/NHibernate/Cfg/Settings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ namespace NHibernate.Cfg
1818
/// </summary>
1919
public sealed class Settings
2020
{
21-
private static IConfigurationManager _configurationManager = new SystemConfigurationManager();
21+
private static IConfigurationManager _configurationManager = new StaticSystemConfigurationManager();
2222

2323
/// <summary>
2424
/// Provides ability to override default <see cref="System.Configuration.ConfigurationManager"/> with custom implementation.

0 commit comments

Comments
 (0)