Skip to content

Commit c5d8de8

Browse files
committed
Made FluentNHibernate.dll CLS compliant
1 parent 405c50d commit c5d8de8

18 files changed

+268
-166
lines changed

src/FluentNHibernate/Automapping/AutoJoinedSubClassPart.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Linq;
4-
using System.Reflection;
53
using FluentNHibernate.Mapping;
64
using FluentNHibernate.Mapping.Providers;
75
using FluentNHibernate.MappingModel;
@@ -12,12 +10,19 @@ namespace FluentNHibernate.Automapping
1210
#pragma warning disable 612,618,672
1311
public class AutoJoinedSubClassPart<T> : JoinedSubClassPart<T>, IAutoClasslike
1412
{
13+
private readonly MappingProviderStore providers;
1514
private readonly IList<Member> membersMapped = new List<Member>();
1615

1716
public AutoJoinedSubClassPart(string keyColumn)
18-
: base(keyColumn)
17+
: this(keyColumn, new MappingProviderStore())
1918
{}
2019

20+
AutoJoinedSubClassPart(string keyColumn, MappingProviderStore providers)
21+
: base(keyColumn, new AttributeStore(), providers)
22+
{
23+
this.providers = providers;
24+
}
25+
2126
public object GetMapping()
2227
{
2328
return ((ISubclassMappingProvider)this).GetSubclassMapping();
@@ -78,15 +83,15 @@ public void JoinedSubClass<TSubclass>(string keyColumn, Action<AutoJoinedSubClas
7883

7984
action(joinedclass);
8085

81-
subclasses[typeof(TSubclass)] = joinedclass;
86+
providers.Subclasses[typeof(TSubclass)] = joinedclass;
8287
}
8388

8489
public IAutoClasslike JoinedSubClass(Type type, string keyColumn)
8590
{
8691
var genericType = typeof(AutoJoinedSubClassPart<>).MakeGenericType(type);
8792
var joinedclass = (ISubclassMappingProvider)Activator.CreateInstance(genericType, keyColumn);
8893

89-
subclasses[type] = joinedclass;
94+
providers.Subclasses[type] = joinedclass;
9095

9196
return (IAutoClasslike)joinedclass;
9297
}
@@ -98,15 +103,15 @@ public void SubClass<TSubclass>(string discriminatorValue, Action<AutoSubClassPa
98103

99104
action(subclass);
100105

101-
subclasses[typeof(TSubclass)] = subclass;
106+
providers.Subclasses[typeof(TSubclass)] = subclass;
102107
}
103108

104109
public IAutoClasslike SubClass(Type type, string discriminatorValue)
105110
{
106111
var genericType = typeof(AutoSubClassPart<>).MakeGenericType(type);
107112
var subclass = (ISubclassMappingProvider)Activator.CreateInstance(genericType, discriminatorValue);
108113

109-
subclasses[type] = subclass;
114+
providers.Subclasses[type] = subclass;
110115

111116
return (IAutoClasslike)subclass;
112117
}

src/FluentNHibernate/Automapping/AutoMapping.cs

Lines changed: 41 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,30 @@
22
using System.Collections.Generic;
33
using System.Linq;
44
using System.Linq.Expressions;
5-
using System.Reflection;
65
using FluentNHibernate.Mapping;
76
using FluentNHibernate.Mapping.Providers;
7+
using FluentNHibernate.MappingModel;
88
using FluentNHibernate.MappingModel.ClassBased;
99
using FluentNHibernate.Utils;
1010

1111
namespace FluentNHibernate.Automapping
1212
{
13-
#pragma warning disable 612,618,672
1413
public class AutoMapping<T> : ClassMap<T>, IAutoClasslike, IPropertyIgnorer
1514
{
15+
private readonly AttributeStore<ClassMapping> attributes;
16+
private readonly MappingProviderStore providers;
1617
readonly IList<Member> mappedMembers;
1718

1819
public AutoMapping(IList<Member> mappedMembers)
20+
: this(mappedMembers, new AttributeStore<ClassMapping>(), new MappingProviderStore())
21+
{}
22+
23+
AutoMapping(IList<Member> mappedMembers, AttributeStore<ClassMapping> attributes, MappingProviderStore providers)
24+
: base(attributes, providers)
1925
{
2026
this.mappedMembers = mappedMembers;
27+
this.attributes = attributes;
28+
this.providers = providers;
2129
}
2230

2331
void IAutoClasslike.DiscriminateSubClassesOnColumn(string column)
@@ -38,52 +46,53 @@ void IAutoClasslike.AlterModel(ClassMappingBase mapping)
3846
{
3947
var classMapping = (ClassMapping)mapping;
4048

41-
if (id != null)
42-
classMapping.Id = id.GetIdentityMapping();
49+
if (providers.Id != null)
50+
classMapping.Id = providers.Id.GetIdentityMapping();
4351

44-
if (compositeId != null)
45-
classMapping.Id = compositeId.GetCompositeIdMapping();
52+
if (providers.CompositeId != null)
53+
classMapping.Id = providers.CompositeId.GetCompositeIdMapping();
4654

47-
if (version != null)
48-
classMapping.Version = version.GetVersionMapping();
55+
if (providers.Version != null)
56+
classMapping.Version = providers.Version.GetVersionMapping();
4957

50-
if (discriminator != null)
51-
classMapping.Discriminator = ((IDiscriminatorMappingProvider)discriminator).GetDiscriminatorMapping();
58+
if (providers.Discriminator != null)
59+
classMapping.Discriminator = providers.Discriminator.GetDiscriminatorMapping();
5260

5361
if (Cache.IsDirty)
5462
classMapping.Cache = ((ICacheMappingProvider)Cache).GetCacheMapping();
5563

56-
foreach (var join in joins)
57-
classMapping.AddJoin(join);
64+
foreach (var join in providers.Joins)
65+
classMapping.AddJoin(join.GetJoinMapping());
5866

59-
classMapping.Tuplizer = tuplizerMapping;
67+
classMapping.Tuplizer = providers.TuplizerMapping;
6068
}
6169

62-
foreach (var property in Properties)
70+
foreach (var property in providers.Properties)
6371
mapping.AddOrReplaceProperty(property.GetPropertyMapping());
6472

65-
foreach (var collection in collections)
73+
foreach (var collection in providers.Collections)
6674
mapping.AddOrReplaceCollection(collection.GetCollectionMapping());
6775

68-
foreach (var component in Components)
76+
foreach (var component in providers.Components)
6977
mapping.AddOrReplaceComponent(component.GetComponentMapping());
7078

71-
foreach (var oneToOne in oneToOnes)
79+
foreach (var oneToOne in providers.OneToOnes)
7280
mapping.AddOrReplaceOneToOne(oneToOne.GetOneToOneMapping());
7381

74-
foreach (var reference in references)
82+
foreach (var reference in providers.References)
7583
mapping.AddOrReplaceReference(reference.GetManyToOneMapping());
7684

77-
foreach (var any in anys)
85+
foreach (var any in providers.Anys)
7886
mapping.AddOrReplaceAny(any.GetAnyMapping());
7987

80-
foreach (var storedProcedure in storedProcedures)
88+
foreach (var storedProcedure in providers.StoredProcedures)
8189
mapping.AddStoredProcedure(storedProcedure.GetStoredProcedureMapping());
8290

83-
foreach (var filter in filters)
91+
foreach (var filter in providers.Filters)
8492
mapping.AddOrReplaceFilter(filter.GetFilterMapping());
8593
}
8694

95+
[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
8796
protected override OneToManyPart<TChild> HasMany<TChild>(Member property)
8897
{
8998
mappedMembers.Add(property);
@@ -131,29 +140,33 @@ public override CompositeIdentityPart<T> CompositeId()
131140
{
132141
var part = new AutoCompositeIdentityPart<T>(mappedMembers);
133142

134-
compositeId = part;
143+
providers.CompositeId = part;
135144

136145
return part;
137146
}
138147

148+
[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
139149
protected override PropertyPart Map(Member property, string columnName)
140150
{
141151
mappedMembers.Add(property);
142152
return base.Map(property, columnName);
143153
}
144154

155+
[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
145156
protected override ManyToOnePart<TOther> References<TOther>(Member property, string columnName)
146157
{
147158
mappedMembers.Add(property);
148159
return base.References<TOther>(property, columnName);
149160
}
150161

162+
[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
151163
protected override ManyToManyPart<TChild> HasManyToMany<TChild>(Member property)
152164
{
153165
mappedMembers.Add(property);
154166
return base.HasManyToMany<TChild>(property);
155167
}
156168

169+
[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
157170
protected override ComponentPart<TComponent> Component<TComponent>(Member property, Action<ComponentPart<TComponent>> action)
158171
{
159172
mappedMembers.Add(property);
@@ -170,6 +183,7 @@ public override IdentityPart Id(Expression<Func<T, object>> memberExpression, st
170183
return base.Id(memberExpression, column);
171184
}
172185

186+
[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
173187
protected override OneToOnePart<TOther> HasOne<TOther>(Member property)
174188
{
175189
mappedMembers.Add(property);
@@ -191,7 +205,7 @@ public AutoJoinedSubClassPart<TSubclass> JoinedSubClass<TSubclass>(string keyCol
191205
if (action != null)
192206
action(joinedclass);
193207

194-
subclasses[typeof(TSubclass)] = joinedclass;
208+
providers.Subclasses[typeof(TSubclass)] = joinedclass;
195209

196210
return joinedclass;
197211
}
@@ -202,7 +216,7 @@ public IAutoClasslike JoinedSubClass(Type type, string keyColumn)
202216
var joinedclass = (ISubclassMappingProvider)Activator.CreateInstance(genericType, keyColumn);
203217

204218
// remove any mappings for the same type, then re-add
205-
subclasses[type] = joinedclass;
219+
providers.Subclasses[type] = joinedclass;
206220

207221
return (IAutoClasslike)joinedclass;
208222
}
@@ -223,7 +237,7 @@ public AutoSubClassPart<TSubclass> SubClass<TSubclass>(object discriminatorValue
223237
action(subclass);
224238

225239
// remove any mappings for the same type, then re-add
226-
subclasses[typeof(TSubclass)] = subclass;
240+
providers.Subclasses[typeof(TSubclass)] = subclass;
227241

228242
return subclass;
229243
}
@@ -240,7 +254,7 @@ public IAutoClasslike SubClass(Type type, string discriminatorValue)
240254
var subclass = (ISubclassMappingProvider)Activator.CreateInstance(genericType, null, discriminatorValue);
241255

242256
// remove any mappings for the same type, then re-add
243-
subclasses[type] = subclass;
257+
providers.Subclasses[type] = subclass;
244258

245259
return (IAutoClasslike)subclass;
246260
}
@@ -255,7 +269,7 @@ public void Join(string table, Action<AutoJoinPart<T>> action)
255269

256270
action(join);
257271

258-
joins.Add(((IJoinMappingProvider)join).GetJoinMapping());
272+
providers.Joins.Add(join);
259273
}
260274

261275
#pragma warning disable 809
@@ -266,6 +280,5 @@ public override ImportPart ImportType<TImport>()
266280
return null;
267281
}
268282
#pragma warning restore 809
269-
#pragma warning restore 612,618,672
270283
}
271284
}

src/FluentNHibernate/Automapping/AutoSubClassPart.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Linq;
4-
using System.Reflection;
53
using FluentNHibernate.Mapping;
64
using FluentNHibernate.Mapping.Providers;
75
using FluentNHibernate.MappingModel;
@@ -12,12 +10,19 @@ namespace FluentNHibernate.Automapping
1210
#pragma warning disable 612,618,672
1311
public class AutoSubClassPart<T> : SubClassPart<T>, IAutoClasslike
1412
{
13+
private readonly MappingProviderStore providers;
1514
private readonly IList<Member> membersMapped = new List<Member>();
1615

1716
public AutoSubClassPart(DiscriminatorPart parent, string discriminatorValue)
18-
: base(parent, discriminatorValue)
17+
: this(parent, discriminatorValue, new MappingProviderStore())
1918
{}
2019

20+
AutoSubClassPart(DiscriminatorPart parent, string discriminatorValue, MappingProviderStore providers)
21+
: base(parent, discriminatorValue, providers)
22+
{
23+
this.providers = providers;
24+
}
25+
2126
public object GetMapping()
2227
{
2328
return ((ISubclassMappingProvider)this).GetSubclassMapping();
@@ -78,15 +83,15 @@ public void JoinedSubClass<TSubclass>(string keyColumn, Action<AutoJoinedSubClas
7883

7984
action(joinedclass);
8085

81-
subclasses[typeof(TSubclass)] = joinedclass;
86+
providers.Subclasses[typeof(TSubclass)] = joinedclass;
8287
}
8388

8489
public IAutoClasslike JoinedSubClass(Type type, string keyColumn)
8590
{
8691
var genericType = typeof(AutoJoinedSubClassPart<>).MakeGenericType(type);
8792
var joinedclass = (ISubclassMappingProvider)Activator.CreateInstance(genericType, keyColumn);
8893

89-
subclasses[type] = joinedclass;
94+
providers.Subclasses[type] = joinedclass;
9095

9196
return (IAutoClasslike)joinedclass;
9297
}
@@ -98,15 +103,15 @@ public void SubClass<TSubclass>(string discriminatorValue, Action<AutoSubClassPa
98103

99104
action(subclass);
100105

101-
subclasses[typeof(TSubclass)] = subclass;
106+
providers.Subclasses[typeof(TSubclass)] = subclass;
102107
}
103108

104109
public IAutoClasslike SubClass(Type type, string discriminatorValue)
105110
{
106111
var genericType = typeof(AutoSubClassPart<>).MakeGenericType(type);
107112
var subclass = (ISubclassMappingProvider)Activator.CreateInstance(genericType, discriminatorValue);
108113

109-
subclasses[type] = subclass;
114+
providers.Subclasses[type] = subclass;
110115

111116
return (IAutoClasslike)subclass;
112117
}

src/FluentNHibernate/FluentNHibernate.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,7 @@
442442
<Compile Include="MappingModel\Output\XmlNaturalIdWriter.cs" />
443443
<Compile Include="Mapping\Access.cs" />
444444
<Compile Include="Mapping\Laziness.cs" />
445+
<Compile Include="Mapping\MappingProviderStore.cs" />
445446
<Compile Include="Mapping\NaturalIdPart.cs" />
446447
<Compile Include="Mapping\Providers\IElementMappingProvider.cs" />
447448
<Compile Include="Mapping\Providers\IExternalComponentMappingProvider.cs" />

0 commit comments

Comments
 (0)