Skip to content

Commit 45efeca

Browse files
author
James Gregory
committed
Refactored automapping to use OnMemberMapped style instead of overriding each builder
1 parent c1de7a2 commit 45efeca

14 files changed

+101
-309
lines changed

src/FluentNHibernate.Testing/FluentInterfaceTests/BaseModelFixture.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ protected ModelTester<IdentityPart, IdMapping> Id()
7979

8080
protected ModelTester<CompositeIdentityPart<T>, CompositeIdMapping> CompositeId<T>()
8181
{
82-
return new ModelTester<CompositeIdentityPart<T>, CompositeIdMapping>(() => new CompositeIdentityPart<T>(), x => ((ICompositeIdMappingProvider)x).GetCompositeIdMapping());
82+
return new ModelTester<CompositeIdentityPart<T>, CompositeIdMapping>(() => new CompositeIdentityPart<T>(member => {}), x => ((ICompositeIdMappingProvider)x).GetCompositeIdMapping());
8383
}
8484

8585
protected ModelTester<OneToOnePart<PropertyReferenceTarget>, OneToOneMapping> OneToOne()

src/FluentNHibernate/Automapping/AutoCompositeIdentityPart.cs

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 2 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
using System;
2-
using System.Collections.Generic;
1+
using System.Collections.Generic;
32
using FluentNHibernate.Mapping;
43

54
namespace FluentNHibernate.Automapping
65
{
7-
#pragma warning disable 612,618,672
86
public class AutoJoinPart<T> : JoinPart<T>
97
{
108
readonly IList<Member> mappedMembers;
@@ -15,48 +13,9 @@ public AutoJoinPart(IList<Member> mappedMembers, string tableName)
1513
this.mappedMembers = mappedMembers;
1614
}
1715

18-
protected override ComponentPart<TComponent> Component<TComponent>(Member property, Action<ComponentPart<TComponent>> action)
19-
{
20-
mappedMembers.Add(property);
21-
22-
return base.Component(property, action);
23-
}
24-
25-
protected override OneToManyPart<TChild> HasMany<TChild>(Member member)
16+
internal override void OnMemberMapped(Member member)
2617
{
2718
mappedMembers.Add(member);
28-
return base.HasMany<TChild>(member);
29-
}
30-
31-
protected override ManyToManyPart<TChild> HasManyToMany<TChild>(Member property)
32-
{
33-
mappedMembers.Add(property);
34-
return base.HasManyToMany<TChild>(property);
35-
}
36-
37-
protected override OneToOnePart<TOther> HasOne<TOther>(Member property)
38-
{
39-
mappedMembers.Add(property);
40-
return base.HasOne<TOther>(property);
41-
}
42-
43-
protected override PropertyPart Map(Member property, string columnName)
44-
{
45-
mappedMembers.Add(property);
46-
return base.Map(property, columnName);
47-
}
48-
49-
protected override ManyToOnePart<TOther> References<TOther>(Member property, string columnName)
50-
{
51-
mappedMembers.Add(property);
52-
return base.References<TOther>(property, columnName);
53-
}
54-
55-
protected override AnyPart<TOther> ReferencesAny<TOther>(Member property)
56-
{
57-
mappedMembers.Add(property);
58-
return base.ReferencesAny<TOther>(property);
5919
}
6020
}
61-
#pragma warning restore 612,618,672
6221
}

src/FluentNHibernate/Automapping/AutoJoinedSubClassPart.cs

Lines changed: 6 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77

88
namespace FluentNHibernate.Automapping
99
{
10-
#pragma warning disable 612,618,672
10+
#pragma warning disable 612,618
1111
public class AutoJoinedSubClassPart<T> : JoinedSubClassPart<T>, IAutoClasslike
12+
#pragma warning restore 612,618
1213
{
1314
private readonly MappingProviderStore providers;
14-
private readonly IList<Member> membersMapped = new List<Member>();
15+
private readonly IList<Member> mappedMembers = new List<Member>();
1516

1617
public AutoJoinedSubClassPart(string keyColumn)
1718
: this(keyColumn, new MappingProviderStore())
@@ -36,44 +37,9 @@ void IAutoClasslike.DiscriminateSubClassesOnColumn(string column)
3637
void IAutoClasslike.AlterModel(ClassMappingBase mapping)
3738
{}
3839

39-
protected override OneToManyPart<TChild> HasMany<TChild>(Member property)
40+
internal override void OnMemberMapped(Member member)
4041
{
41-
membersMapped.Add(property);
42-
return base.HasMany<TChild>(property);
43-
}
44-
45-
protected override PropertyPart Map(Member property, string columnName)
46-
{
47-
membersMapped.Add(property);
48-
return base.Map(property, columnName);
49-
}
50-
51-
protected override ManyToOnePart<TOther> References<TOther>(Member property, string columnName)
52-
{
53-
membersMapped.Add(property);
54-
return base.References<TOther>(property, columnName);
55-
}
56-
57-
protected override ManyToManyPart<TChild> HasManyToMany<TChild>(Member property)
58-
{
59-
membersMapped.Add(property);
60-
return base.HasManyToMany<TChild>(property);
61-
}
62-
63-
protected override ComponentPart<TComponent> Component<TComponent>(Member property, Action<ComponentPart<TComponent>> action)
64-
{
65-
membersMapped.Add(property);
66-
67-
if (action == null)
68-
action = c => { };
69-
70-
return base.Component(property, action);
71-
}
72-
73-
protected override OneToOnePart<TOther> HasOne<TOther>(Member property)
74-
{
75-
membersMapped.Add(property);
76-
return base.HasOne<TOther>(property);
42+
mappedMembers.Add(member);
7743
}
7844

7945
public void JoinedSubClass<TSubclass>(string keyColumn, Action<AutoJoinedSubClassPart<TSubclass>> action)
@@ -128,8 +94,7 @@ public HibernateMapping GetHibernateMapping()
12894

12995
public IEnumerable<Member> GetIgnoredProperties()
13096
{
131-
return membersMapped;
97+
return mappedMembers;
13298
}
13399
}
134-
#pragma warning restore 612,618,672
135100
}

src/FluentNHibernate/Automapping/AutoMapping.cs

Lines changed: 3 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,9 @@ void IAutoClasslike.AlterModel(ClassMappingBase mapping)
9393
mapping.AddOrReplaceFilter(filter.GetFilterMapping());
9494
}
9595

96-
[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
97-
protected override OneToManyPart<TChild> HasMany<TChild>(Member property)
96+
internal override void OnMemberMapped(Member member)
9897
{
99-
mappedMembers.Add(property);
100-
return base.HasMany<TChild>(property);
98+
mappedMembers.Add(member);
10199
}
102100

103101
public void IgnoreProperty(Expression<Func<T, object>> expression)
@@ -131,72 +129,6 @@ IPropertyIgnorer IPropertyIgnorer.IgnoreProperties(Func<Member, bool> predicate)
131129
return this;
132130
}
133131

134-
public override IdentityPart Id(Expression<Func<T, object>> memberExpression)
135-
{
136-
mappedMembers.Add(memberExpression.ToMember());
137-
return base.Id(memberExpression);
138-
}
139-
140-
public override CompositeIdentityPart<T> CompositeId()
141-
{
142-
var part = new AutoCompositeIdentityPart<T>(mappedMembers);
143-
144-
providers.CompositeId = part;
145-
146-
return part;
147-
}
148-
149-
[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
150-
protected override PropertyPart Map(Member property, string columnName)
151-
{
152-
mappedMembers.Add(property);
153-
return base.Map(property, columnName);
154-
}
155-
156-
[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
157-
protected override ManyToOnePart<TOther> References<TOther>(Member property, string columnName)
158-
{
159-
mappedMembers.Add(property);
160-
return base.References<TOther>(property, columnName);
161-
}
162-
163-
[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
164-
protected override ManyToManyPart<TChild> HasManyToMany<TChild>(Member property)
165-
{
166-
mappedMembers.Add(property);
167-
return base.HasManyToMany<TChild>(property);
168-
}
169-
170-
[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
171-
protected override ComponentPart<TComponent> Component<TComponent>(Member property, Action<ComponentPart<TComponent>> action)
172-
{
173-
mappedMembers.Add(property);
174-
175-
if (action == null)
176-
action = c => { };
177-
178-
return base.Component(property, action);
179-
}
180-
181-
public override IdentityPart Id(Expression<Func<T, object>> memberExpression, string column)
182-
{
183-
mappedMembers.Add(memberExpression.ToMember());
184-
return base.Id(memberExpression, column);
185-
}
186-
187-
[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
188-
protected override OneToOnePart<TOther> HasOne<TOther>(Member property)
189-
{
190-
mappedMembers.Add(property);
191-
return base.HasOne<TOther>(property);
192-
}
193-
194-
protected override VersionPart Version(Member property)
195-
{
196-
mappedMembers.Add(property);
197-
return base.Version(property);
198-
}
199-
200132
public AutoJoinedSubClassPart<TSubclass> JoinedSubClass<TSubclass>(string keyColumn, Action<AutoJoinedSubClassPart<TSubclass>> action)
201133
where TSubclass : T
202134
{
@@ -276,7 +208,7 @@ public void Join(string table, Action<AutoJoinPart<T>> action)
276208
#pragma warning disable 809
277209
// hide this - imports aren't supported in overrides
278210
[Obsolete("Imports aren't supported in overrides.", true)]
279-
public override ImportPart ImportType<TImport>()
211+
public new ImportPart ImportType<TImport>()
280212
{
281213
return null;
282214
}

src/FluentNHibernate/Automapping/AutoSubClassPart.cs

Lines changed: 6 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77

88
namespace FluentNHibernate.Automapping
99
{
10-
#pragma warning disable 612,618,672
10+
#pragma warning disable 612,618
1111
public class AutoSubClassPart<T> : SubClassPart<T>, IAutoClasslike
12+
#pragma warning restore 612,618
1213
{
1314
private readonly MappingProviderStore providers;
14-
private readonly IList<Member> membersMapped = new List<Member>();
15+
private readonly IList<Member> mappedMembers = new List<Member>();
1516

1617
public AutoSubClassPart(DiscriminatorPart parent, string discriminatorValue)
1718
: this(parent, discriminatorValue, new MappingProviderStore())
@@ -36,44 +37,9 @@ void IAutoClasslike.DiscriminateSubClassesOnColumn(string column)
3637
void IAutoClasslike.AlterModel(ClassMappingBase mapping)
3738
{ }
3839

39-
protected override OneToManyPart<TChild> HasMany<TChild>(Member property)
40+
internal override void OnMemberMapped(Member member)
4041
{
41-
membersMapped.Add(property);
42-
return base.HasMany<TChild>(property);
43-
}
44-
45-
protected override PropertyPart Map(Member property, string columnName)
46-
{
47-
membersMapped.Add(property);
48-
return base.Map(property, columnName);
49-
}
50-
51-
protected override ManyToOnePart<TOther> References<TOther>(Member property, string columnName)
52-
{
53-
membersMapped.Add(property);
54-
return base.References<TOther>(property, columnName);
55-
}
56-
57-
protected override ManyToManyPart<TChild> HasManyToMany<TChild>(Member property)
58-
{
59-
membersMapped.Add(property);
60-
return base.HasManyToMany<TChild>(property);
61-
}
62-
63-
protected override ComponentPart<TComponent> Component<TComponent>(Member property, Action<ComponentPart<TComponent>> action)
64-
{
65-
membersMapped.Add(property);
66-
67-
if (action == null)
68-
action = c => { };
69-
70-
return base.Component(property, action);
71-
}
72-
73-
protected override OneToOnePart<TOther> HasOne<TOther>(Member property)
74-
{
75-
membersMapped.Add(property);
76-
return base.HasOne<TOther>(property);
42+
mappedMembers.Add(member);
7743
}
7844

7945
public void JoinedSubClass<TSubclass>(string keyColumn, Action<AutoJoinedSubClassPart<TSubclass>> action)
@@ -128,8 +94,7 @@ public HibernateMapping GetHibernateMapping()
12894

12995
public IEnumerable<Member> GetIgnoredProperties()
13096
{
131-
return membersMapped;
97+
return mappedMembers;
13298
}
13399
}
134-
#pragma warning restore 612,618,672
135100
}

src/FluentNHibernate/Automapping/IAutoClasslike.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
using System;
2-
using System.Collections.Generic;
3-
using System.Reflection;
4-
using FluentNHibernate.Mapping;
52
using FluentNHibernate.MappingModel.ClassBased;
63

74
namespace FluentNHibernate.Automapping

src/FluentNHibernate/Automapping/IAutoMappingAlteration.cs

Whitespace-only changes.

src/FluentNHibernate/Automapping/IPropertyIgnorer.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
using System;
2-
using System.Reflection;
3-
using FluentNHibernate.Mapping;
42

53
namespace FluentNHibernate.Automapping
64
{

src/FluentNHibernate/FluentNHibernate.csproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@
8787
<Compile Include="Automapping\Alterations\IAutoMappingAlteration.cs" />
8888
<Compile Include="Automapping\Alterations\IAutoMappingOverride.cs" />
8989
<Compile Include="AssemblyTypeSource.cs" />
90-
<Compile Include="Automapping\AutoCompositeIdentityPart.cs" />
9190
<Compile Include="Automapping\AutoJoinedSubClassPart.cs" />
9291
<Compile Include="Automapping\AutoJoinPart.cs" />
9392
<Compile Include="Automapping\AutoMap.cs" />
@@ -101,7 +100,6 @@
101100
<Compile Include="Automapping\AutoSubClassPart.cs" />
102101
<Compile Include="Automapping\DefaultAutomappingConfiguration.cs" />
103102
<Compile Include="Automapping\IAutoClasslike.cs" />
104-
<Compile Include="Automapping\IAutoMappingAlteration.cs" />
105103
<Compile Include="Automapping\IAutomappingConfiguration.cs" />
106104
<Compile Include="Automapping\InlineOverride.cs" />
107105
<Compile Include="Automapping\IPropertyIgnorer.cs" />

0 commit comments

Comments
 (0)