Skip to content

Commit 50a29ea

Browse files
Merge pull request #573 from johelvisguzman/config
Modified config file section handler for app.config to defined typed elements as parameter collections themselves
2 parents 6347a6c + 6b724e4 commit 50a29ea

File tree

5 files changed

+21
-45
lines changed

5 files changed

+21
-45
lines changed

src/DotNetToolkit.Repository/Internal/ConfigFile/ConfigurationSection.cs

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,19 @@ public virtual RepositoryInterceptorElementCollection Interceptors
3737
get => (RepositoryInterceptorElementCollection)this[InterceptorsKey];
3838
}
3939

40-
[ConfigurationProperty(DefaultContextFactoryKey, IsRequired = false)]
40+
[ConfigurationProperty(DefaultContextFactoryKey, IsRequired = false, IsDefaultCollection = false)]
4141
public virtual RepositoryContextFactoryElement DefaultContextFactory
4242
{
4343
get => (RepositoryContextFactoryElement)this[DefaultContextFactoryKey];
4444
}
4545

46-
[ConfigurationProperty(LoggingProviderKey, IsRequired = false)]
46+
[ConfigurationProperty(LoggingProviderKey, IsRequired = false, IsDefaultCollection = false)]
4747
public virtual LoggingProviderElement LoggingProvider
4848
{
4949
get => (LoggingProviderElement)this[LoggingProviderKey];
5050
}
5151

52-
[ConfigurationProperty(CachingProviderKey, IsRequired = false)]
52+
[ConfigurationProperty(CachingProviderKey, IsRequired = false, IsDefaultCollection = false)]
5353
public virtual CachingProviderElement CachingProvider
5454
{
5555
get => (CachingProviderElement)this[CachingProviderKey];
@@ -74,7 +74,7 @@ public ICacheProvider GetCachingProvider()
7474
return CachingProvider.GetTypedValue();
7575
}
7676

77-
public Dictionary<Type, Func<IRepositoryInterceptor>> GetInterceptors()
77+
public IReadOnlyDictionary<Type, Func<IRepositoryInterceptor>> GetInterceptors()
7878
{
7979
return Interceptors.GetTypedValues();
8080
}
@@ -145,7 +145,7 @@ public string ValueString
145145

146146
class ParameterCollection : ConfigurationElementCollection
147147
{
148-
private const string ParameterKey = "parameter";
148+
private const string ParameterKey = "param";
149149

150150
public override ConfigurationElementCollectionType CollectionType
151151
{
@@ -168,10 +168,9 @@ protected override string ElementName
168168
}
169169
}
170170

171-
abstract class TypedConfigurationElementBase<T> : ConfigurationElement
171+
abstract class TypedConfigurationElementBase<T> : ParameterCollection
172172
{
173173
private const string TypeKey = "type";
174-
private const string ParametersKey = "parameters";
175174

176175
private Type _type;
177176

@@ -203,21 +202,14 @@ public Type Type
203202
}
204203
}
205204

206-
[ConfigurationProperty(ParametersKey, IsDefaultCollection = false)]
207-
public ParameterCollection Parameters
208-
{
209-
get { return (ParameterCollection)this[ParametersKey]; }
210-
}
211-
212205
public virtual T GetTypedValue()
213206
{
214207
var type = Type;
215208

216209
if (type == null)
217210
return default(T);
218211

219-
var keyValues = Parameters
220-
.Cast<ParameterElement>()
212+
var keyValues = this.Cast<ParameterElement>()
221213
.ToDictionary(x => x.Name, x => x.ValueString);
222214

223215
if (!keyValues.Any())

src/DotNetToolkit.Repository/Internal/ConfigFile/IConfigurationSection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ internal interface IConfigurationSection
1818

1919
ICacheProvider GetCachingProvider();
2020

21-
Dictionary<Type, Func<IRepositoryInterceptor>> GetInterceptors();
21+
IReadOnlyDictionary<Type, Func<IRepositoryInterceptor>> GetInterceptors();
2222
}
2323
}

src/DotNetToolkit.Repository/Internal/ConfigFile/Json/ConfigurationSection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public ICacheProvider GetCachingProvider()
8484
return null;
8585
}
8686

87-
public Dictionary<Type, Func<IRepositoryInterceptor>> GetInterceptors()
87+
public IReadOnlyDictionary<Type, Func<IRepositoryInterceptor>> GetInterceptors()
8888
{
8989
var interceptorsDict = new Dictionary<Type, Func<IRepositoryInterceptor>>();
9090
var section = _root.GetSection(InterceptorCollectionSectionKey);

test/DotNetToolkit.Repository.Test/App.config

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,19 @@
66
</configSections>
77
<repository>
88
<defaultContextFactory type="DotNetToolkit.Repository.InMemory.Internal.InMemoryRepositoryContextFactory, DotNetToolkit.Repository.InMemory">
9-
<parameters>
10-
<parameter name="ignoreTransactionWarning" value="True" />
11-
<parameter name="databaseName" value="__InMemoryDatabaseName__" />
12-
</parameters>
9+
<param name="ignoreTransactionWarning" value="True" />
10+
<param name="databaseName" value="__InMemoryDatabaseName__" />
1311
</defaultContextFactory>
1412
<loggingProvider type="DotNetToolkit.Repository.Configuration.Logging.ConsoleLoggerProvider, DotNetToolkit.Repository">
15-
<parameters>
16-
<parameter name="minLogLevel" value="Debug" />
17-
</parameters>
13+
<param name="minLogLevel" value="Debug" />
1814
</loggingProvider>
1915
<cachingProvider type="DotNetToolkit.Repository.Caching.InMemory.InMemoryCacheProvider, DotNetToolkit.Repository.Caching.InMemory">
20-
<parameters>
21-
<parameter name="expiry" value="00:00:30" />
22-
</parameters>
16+
<param name="expiry" value="00:00:30" />
2317
</cachingProvider>
2418
<interceptors>
2519
<interceptor type="DotNetToolkit.Repository.Test.Data.TestRepositoryInterceptor, DotNetToolkit.Repository.Test">
26-
<parameters>
27-
<parameter name="p1" value="random param" />
28-
<parameter name="p2" value="True" />
29-
</parameters>
20+
<param name="p1" value="random param" />
21+
<param name="p2" value="True" />
3022
</interceptor>
3123
</interceptors>
3224
</repository>

test/DotNetToolkit.Repository.Test/repository.config

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,19 @@
66
</configSections>
77
<repository>
88
<defaultContextFactory type="DotNetToolkit.Repository.InMemory.Internal.InMemoryRepositoryContextFactory, DotNetToolkit.Repository.InMemory">
9-
<parameters>
10-
<parameter name="ignoreTransactionWarning" value="True" />
11-
<parameter name="databaseName" value="__InMemoryDatabaseName__" />
12-
</parameters>
9+
<param name="ignoreTransactionWarning" value="True" />
10+
<param name="databaseName" value="__InMemoryDatabaseName__" />
1311
</defaultContextFactory>
1412
<loggingProvider type="DotNetToolkit.Repository.Configuration.Logging.ConsoleLoggerProvider, DotNetToolkit.Repository">
15-
<parameters>
16-
<parameter name="minLogLevel" value="Debug" />
17-
</parameters>
13+
<param name="minLogLevel" value="Debug" />
1814
</loggingProvider>
1915
<cachingProvider type="DotNetToolkit.Repository.Caching.InMemory.InMemoryCacheProvider, DotNetToolkit.Repository.Caching.InMemory">
20-
<parameters>
21-
<parameter name="expiry" value="00:00:30" />
22-
</parameters>
16+
<param name="expiry" value="00:00:30" />
2317
</cachingProvider>
2418
<interceptors>
2519
<interceptor type="DotNetToolkit.Repository.Test.Data.TestRepositoryInterceptor, DotNetToolkit.Repository.Test">
26-
<parameters>
27-
<parameter name="p1" value="random param" />
28-
<parameter name="p2" value="True" />
29-
</parameters>
20+
<param name="p1" value="random param" />
21+
<param name="p2" value="True" />
3022
</interceptor>
3123
</interceptors>
3224
</repository>

0 commit comments

Comments
 (0)