Skip to content

Commit 86d1635

Browse files
committed
Address comments
1 parent ed3c4c4 commit 86d1635

7 files changed

+123
-118
lines changed

src/NHibernate.Test/TestsContext.cs

+3-7
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,19 @@
1-
using NUnit.Framework;
1+
#if NETCOREAPP2_0
2+
using NUnit.Framework;
23

3-
#if NETCOREAPP2_0
44
using System.Configuration;
55
using System.IO;
66
using log4net.Repository.Hierarchy;
77
using NHibernate.Cfg;
8-
#endif
98

109
namespace NHibernate.Test
1110
{
12-
#if NETCOREAPP2_0
1311
[SetUpFixture]
14-
#endif
1512
public class TestsContext
1613
{
1714
private static bool ExecutingWithVsTest { get; } =
1815
System.Reflection.Assembly.GetEntryAssembly()?.GetName().Name == "testhost";
1916

20-
#if NETCOREAPP2_0
2117
[OneTimeSetUp]
2218
public void RunBeforeAnyTests()
2319
{
@@ -49,6 +45,6 @@ private static void ConfigureLog4Net()
4945
hierarchy.Root.AddAppender(consoleAppender);
5046
hierarchy.Configured = true;
5147
}
52-
#endif
5348
}
5449
}
50+
#endif

src/NHibernate/Cfg/ConfigurationManagerBase.cs

-109
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
namespace NHibernate.Cfg
2+
{
3+
/// <summary>
4+
/// Base class for NHibernate configuration settings
5+
/// </summary>
6+
public abstract class ConfigurationProvider
7+
{
8+
public abstract IHibernateConfiguration GetConfiguration();
9+
public abstract string GetNamedConnectionString(string name);
10+
11+
/// <summary>
12+
/// Type that implements <see cref="INHibernateLoggerFactory"/>
13+
/// </summary>
14+
public abstract string GetLoggerFactoryClassName();
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
namespace NHibernate.Cfg
2+
{
3+
class NullConfigurationManager : ConfigurationProvider
4+
{
5+
public override IHibernateConfiguration GetConfiguration()
6+
{
7+
return null;
8+
}
9+
10+
public override string GetNamedConnectionString(string name)
11+
{
12+
return null;
13+
}
14+
15+
public override string GetLoggerFactoryClassName()
16+
{
17+
return null;
18+
}
19+
}
20+
}

src/NHibernate/Cfg/Settings.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ namespace NHibernate.Cfg
1818
/// </summary>
1919
public sealed class Settings
2020
{
21-
private static ConfigurationManagerBase _configurationManager = new StaticSystemConfigurationManager();
21+
private static ConfigurationProvider _configurationManager = new StaticSystemConfigurationManager();
2222

2323
/// <summary>
2424
/// Provides ability to override default <see cref="System.Configuration.ConfigurationManager"/> with custom implementation.
2525
/// Can be set to null if all configuration is specified by code
2626
/// </summary>
27-
public static ConfigurationManagerBase ConfigurationManager
27+
public static ConfigurationProvider ConfigurationManager
2828
{
2929
get => _configurationManager;
3030
set => _configurationManager = value ?? new NullConfigurationManager();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
using System;
2+
using System.Configuration;
3+
using System.Linq;
4+
using NHibernate.Cfg.ConfigurationSchema;
5+
6+
namespace NHibernate.Cfg
7+
{
8+
class StaticSystemConfigurationManager : ConfigurationProvider
9+
{
10+
public override IHibernateConfiguration GetConfiguration()
11+
{
12+
//TODO 6.0: Throw if not null and not IHibernateConfiguration
13+
return ConfigurationManager.GetSection(CfgXmlHelper.CfgSectionName) as IHibernateConfiguration;
14+
}
15+
16+
public override string GetNamedConnectionString(string name)
17+
{
18+
return ConfigurationManager.ConnectionStrings[name]?.ConnectionString;
19+
}
20+
21+
public override string GetLoggerFactoryClassName()
22+
{
23+
var name = AppSettings.LoggerFactoryClassName;
24+
var value = ConfigurationManager.AppSettings[name];
25+
26+
//TODO 6.0: Return value right away. Don't do ignore case search and document it as possible breaking change.
27+
if (value != null)
28+
return value;
29+
30+
return GetAppSettingIgnoreCase(name);
31+
}
32+
33+
//TODO 6.0: Remove it
34+
private static string GetAppSettingIgnoreCase(string name)
35+
{
36+
var key = ConfigurationManager.AppSettings.Keys.Cast<string>().FirstOrDefault(k => name.Equals(k, StringComparison.OrdinalIgnoreCase));
37+
return string.IsNullOrEmpty(key)
38+
? null
39+
: ConfigurationManager.AppSettings[key];
40+
}
41+
}
42+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using System.Configuration;
2+
using NHibernate.Cfg.ConfigurationSchema;
3+
4+
namespace NHibernate.Cfg
5+
{
6+
/// <summary>
7+
/// Configuration manager that supports user provided configuration
8+
/// </summary>
9+
public class SystemConfigurationManager : ConfigurationProvider
10+
{
11+
private readonly System.Configuration.Configuration _configuration;
12+
13+
public SystemConfigurationManager(System.Configuration.Configuration configuration)
14+
{
15+
_configuration = configuration;
16+
}
17+
18+
public override IHibernateConfiguration GetConfiguration()
19+
{
20+
ConfigurationSection configurationSection = _configuration.GetSection(CfgXmlHelper.CfgSectionName);
21+
var xml = configurationSection?.SectionInformation.GetRawXml();
22+
return xml == null ? null : HibernateConfiguration.FromAppConfig(xml);
23+
}
24+
25+
public override string GetNamedConnectionString(string name)
26+
{
27+
return _configuration.ConnectionStrings.ConnectionStrings[name]?.ConnectionString;
28+
}
29+
30+
public override string GetLoggerFactoryClassName()
31+
{
32+
return GetAppSetting(AppSettings.LoggerFactoryClassName);
33+
}
34+
35+
private string GetAppSetting(string name)
36+
{
37+
return _configuration.AppSettings.Settings[name]?.Value;
38+
}
39+
}
40+
}

0 commit comments

Comments
 (0)