Skip to content

Commit 4444ada

Browse files
authored
Merge pull request #397 from DataObjects-NET/7.1-ioptions-config-loading
Ability to load configurations from IConfigurationSection/IConfigurationRoot
2 parents 8a03ac0 + b261028 commit 4444ada

File tree

89 files changed

+12469
-221
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+12469
-221
lines changed

ChangeLog/7.1.2_dev.txt

+9-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,9 @@
1-
[main] Addressed issue when cycles in Entity dependency graph were not detected
1+
[main] Addressed issue when cycles in Entity dependency graph were not detected
2+
[main] Intoduced DomainConfuguration.ExtensionConfigurations as unified configuration storage for extensions' configurations
3+
[main] DomainConfiguration.Load() method now has overloads which gets abstractions from Microsoft.Extensions.Configuration API
4+
[localization] LocalizationConfiguration.Load() method now has overloads which gets abstractions from Microsoft.Extensions.Configuration API
5+
[localization] ConfigureLocalizationExtension() extensions for DomainConfiguration are added, check ReadMe/documentation for examples of usage
6+
[reprocessing] ReprocessingConfiguration.Load() method now has overloads which gets abstractions from Microsoft.Extensions.Configuration API
7+
[reprocessing] ConfigureReprocessingExtension() extensions for DomainConfiguration are added, check ReadMe/documentation for examples of usage
8+
[security] SecurityConfiguration.Load() method now has overloads which gets abstractions from Microsoft.Extensions.Configuration API
9+
[security] ConfigureSecurityExtension() extensions for DomainConfiguration are added, check ReadMe/documentation for examples of usage
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using Microsoft.Extensions.Configuration;
8+
using NUnit.Framework;
9+
10+
namespace TestCommon
11+
{
12+
public abstract class MicrosoftConfigurationTestBase
13+
{
14+
protected enum ConfigTypes
15+
{
16+
Json,
17+
Xml,
18+
}
19+
20+
protected IConfigurationRoot configurationRoot;
21+
22+
protected abstract ConfigTypes ConfigFormat { get; }
23+
24+
protected abstract void AddConfigurationFile(IConfigurationBuilder configurationBuilder);
25+
26+
[OneTimeSetUp]
27+
public virtual void BeforeAllTestsSetUp()
28+
{
29+
var configurationBuilder = new ConfigurationBuilder();
30+
configurationBuilder.SetBasePath(Directory.GetCurrentDirectory());
31+
AddConfigurationFile(configurationBuilder);
32+
configurationRoot = (ConfigurationRoot) configurationBuilder.Build();
33+
}
34+
35+
protected void IgnoreIfXml()
36+
{
37+
if (ConfigFormat == ConfigTypes.Xml)
38+
throw new IgnoreException("Not valid for Xml format");
39+
}
40+
protected void IgnoreIfJson()
41+
{
42+
if (ConfigFormat == ConfigTypes.Json)
43+
throw new IgnoreException("Not valid for JSON format");
44+
}
45+
46+
protected IConfigurationSection GetAndCheckConfigurationSection(string sectionName)
47+
{
48+
var section = configurationRoot.GetSection(sectionName);
49+
Assert.That(section, Is.Not.Null);
50+
return section;
51+
}
52+
}
53+
}

Extensions/TestCommon/TestCommon.csproj

+3-6
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,13 @@
88
<AssemblyOriginatorKeyFile>$(ExtensionsKeyFile)</AssemblyOriginatorKeyFile>
99
</PropertyGroup>
1010
<Import Project="$(SolutionDir)MSBuild\DataObjects.Net.InternalBuild.targets" />
11-
<ItemGroup Condition="'$(TargetFramework)'=='net5.0'">
12-
<PackageReference Include="System.Configuration.ConfigurationManager" Version="5.0.0" />
13-
</ItemGroup>
14-
<ItemGroup Condition="'$(TargetFramework)'=='net6.0'">
15-
<PackageReference Include="System.Configuration.ConfigurationManager" Version="6.0.1" />
16-
</ItemGroup>
1711
<ItemGroup>
1812
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
1913
<PackageReference Include="NUnit" Version="3.13.2" />
2014
<PackageReference Include="NUnit3TestAdapter" Version="4.2.0" />
15+
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.0" />
16+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
17+
<PackageReference Include="Microsoft.Extensions.Configuration.Xml" Version="6.0.0" />
2118
</ItemGroup>
2219
<ItemGroup>
2320
<ProjectReference Include="..\..\Orm\Xtensive.Orm.Tests.Framework\Xtensive.Orm.Tests.Framework.csproj" />

Extensions/Xtensive.Orm.BulkOperations/NugetContent/ReadMe.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ to server-side UPDATE or DELETE commands.
88

99
Prerequisites
1010
-------------
11-
DataObjects.Net 7.0.x (http://dataobjects.net)
11+
DataObjects.Net 7.1.x (http://dataobjects.net)
1212

1313

1414
Examples of usage
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<configuration>
3+
<!-- No elements, all names should be default-->
4+
<Xtensive.Orm.Localization.Xml.Empty>
5+
</Xtensive.Orm.Localization.Xml.Empty>
6+
7+
<!--Names are empty, all names should be default-->
8+
<Xtensive.Orm.Localization.Xml.NameEmpty>
9+
<DefaultCulture></DefaultCulture>
10+
</Xtensive.Orm.Localization.Xml.NameEmpty>
11+
12+
<Xtensive.Orm.Localization.Xml.NameDefined>
13+
<DefaultCulture>es-ES</DefaultCulture>
14+
</Xtensive.Orm.Localization.Xml.NameDefined>
15+
16+
<Xtensive.Orm.Localization.Xml.FaultyValue>
17+
<DefaultCulture>ololo</DefaultCulture>
18+
</Xtensive.Orm.Localization.Xml.FaultyValue>
19+
20+
<!-- Different namings schemes of elements -->
21+
<!-- LC - lower case -->
22+
<!-- UC - upper case -->
23+
<!-- CC - camel case -->
24+
<!-- PC - pascal case-->
25+
<Xtensive.Orm.Localization.Xml.Naming.LC>
26+
<defaultculture>es-ES</defaultculture>
27+
</Xtensive.Orm.Localization.Xml.Naming.LC>
28+
29+
<Xtensive.Orm.Localization.Xml.Naming.UC>
30+
<DEFAULTCULTURE>es-ES</DEFAULTCULTURE>
31+
</Xtensive.Orm.Localization.Xml.Naming.UC>
32+
33+
<Xtensive.Orm.Localization.Xml.Naming.CC>
34+
<defaultCulture>es-ES</defaultCulture>
35+
</Xtensive.Orm.Localization.Xml.Naming.CC>
36+
37+
<Xtensive.Orm.Localization.Xml.Naming.PC>
38+
<DefaultCulture>es-ES</DefaultCulture>
39+
</Xtensive.Orm.Localization.Xml.Naming.PC>
40+
41+
<!-- Cases of mistyping of element names -->
42+
<!-- LC - lower case -->
43+
<!-- UC - upper case -->
44+
<!-- CC - camel case -->
45+
<!-- PC - pascal case-->
46+
<Xtensive.Orm.Localization.Xml.Mistype.LC>
47+
<defailtculture>es-ES</defailtculture>
48+
</Xtensive.Orm.Localization.Xml.Mistype.LC>
49+
50+
<Xtensive.Orm.Localization.Xml.Mistype.UC>
51+
<DEFAILTCULTURE>es-ES</DEFAILTCULTURE>
52+
</Xtensive.Orm.Localization.Xml.Mistype.UC>
53+
54+
<Xtensive.Orm.Localization.Xml.Mistype.CC>
55+
<defailtCulture>es-ES</defailtCulture>
56+
</Xtensive.Orm.Localization.Xml.Mistype.CC>
57+
58+
<Xtensive.Orm.Localization.Xml.Mistype.PC>
59+
<DefailtCulture>es-ES</DefailtCulture>
60+
</Xtensive.Orm.Localization.Xml.Mistype.PC>
61+
62+
<!-- Cases of configuration when service name is represented by Name child node -->
63+
<Xtensive.Orm.Localization.Xml.NameNode.NameEmpty>
64+
<DefaultCulture>
65+
<Name></Name>
66+
</DefaultCulture>
67+
</Xtensive.Orm.Localization.Xml.NameNode.NameEmpty>
68+
69+
<Xtensive.Orm.Localization.Xml.NameNode.Espaniol>
70+
<DefaultCulture>
71+
<Name>es-ES</Name>
72+
</DefaultCulture>
73+
</Xtensive.Orm.Localization.Xml.NameNode.Espaniol>
74+
75+
<Xtensive.Orm.Localization.Xml.NameNode.FaultyValue>
76+
<DefaultCulture>
77+
<Name>ololo</Name>
78+
</DefaultCulture>
79+
</Xtensive.Orm.Localization.Xml.NameNode.FaultyValue>
80+
81+
<Xtensive.Orm.Localization.Xml.NameNode.Naming.LC>
82+
<DefaultCulture>
83+
<name>es-ES</name>
84+
</DefaultCulture>
85+
</Xtensive.Orm.Localization.Xml.NameNode.Naming.LC>
86+
87+
<Xtensive.Orm.Localization.Xml.NameNode.Naming.UC>
88+
<DefaultCulture>
89+
<NAME>es-ES</NAME>
90+
</DefaultCulture>
91+
</Xtensive.Orm.Localization.Xml.NameNode.Naming.UC>
92+
93+
<Xtensive.Orm.Localization.Xml.NameNode.Naming.CC>
94+
<DefaultCulture>
95+
<naMe>es-ES</naMe>
96+
</DefaultCulture>
97+
</Xtensive.Orm.Localization.Xml.NameNode.Naming.CC>
98+
99+
<Xtensive.Orm.Localization.Xml.NameNode.Naming.PC>
100+
<DefaultCulture>
101+
<NaMe>es-ES</NaMe>
102+
</DefaultCulture>
103+
</Xtensive.Orm.Localization.Xml.NameNode.Naming.PC>
104+
105+
106+
<!-- combinations of Xml-specifit cases, mostly old-fashion attributes -->
107+
<Xtensive.Orm.Localization.NameAttribute.NameEmpty>
108+
<defaultCulture name="" />
109+
</Xtensive.Orm.Localization.NameAttribute.NameEmpty>
110+
111+
<Xtensive.Orm.Localization.NameAttribute.None>
112+
<defaultCulture />
113+
</Xtensive.Orm.Localization.NameAttribute.None>
114+
115+
<Xtensive.Orm.Localization.NameAttribute.Defined>
116+
<defaultCulture name="es-ES" />
117+
</Xtensive.Orm.Localization.NameAttribute.Defined>
118+
119+
<Xtensive.Orm.Localization.NameAttribute.FaultyValue>
120+
<defaultCulture name="ololo" />
121+
</Xtensive.Orm.Localization.NameAttribute.FaultyValue>
122+
123+
<Xtensive.Orm.Localization.NameAttribute.LC>
124+
<defaultculture name="es-ES" />
125+
</Xtensive.Orm.Localization.NameAttribute.LC>
126+
127+
<Xtensive.Orm.Localization.NameAttribute.UC>
128+
<DEFAULTCULTURE name="es-ES" />
129+
</Xtensive.Orm.Localization.NameAttribute.UC>
130+
131+
<Xtensive.Orm.Localization.NameAttribute.PC>
132+
<DefaultCulture name="es-ES" />
133+
</Xtensive.Orm.Localization.NameAttribute.PC>
134+
135+
</configuration>

0 commit comments

Comments
 (0)