Skip to content

Commit

Permalink
Refactored automapping to use OnMemberMapped style instead of overrid…
Browse files Browse the repository at this point in the history
…ing each builder
  • Loading branch information
James Gregory committed Apr 27, 2012
1 parent c1de7a2 commit 45efeca
Show file tree
Hide file tree
Showing 14 changed files with 101 additions and 309 deletions.
Expand Up @@ -79,7 +79,7 @@ public abstract class BaseModelFixture

protected ModelTester<CompositeIdentityPart<T>, CompositeIdMapping> CompositeId<T>()
{
return new ModelTester<CompositeIdentityPart<T>, CompositeIdMapping>(() => new CompositeIdentityPart<T>(), x => ((ICompositeIdMappingProvider)x).GetCompositeIdMapping());
return new ModelTester<CompositeIdentityPart<T>, CompositeIdMapping>(() => new CompositeIdentityPart<T>(member => {}), x => ((ICompositeIdMappingProvider)x).GetCompositeIdMapping());
}

protected ModelTester<OneToOnePart<PropertyReferenceTarget>, OneToOneMapping> OneToOne()
Expand Down
31 changes: 0 additions & 31 deletions src/FluentNHibernate/Automapping/AutoCompositeIdentityPart.cs

This file was deleted.

45 changes: 2 additions & 43 deletions src/FluentNHibernate/Automapping/AutoJoinPart.cs
@@ -1,10 +1,8 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using FluentNHibernate.Mapping;

namespace FluentNHibernate.Automapping
{
#pragma warning disable 612,618,672
public class AutoJoinPart<T> : JoinPart<T>
{
readonly IList<Member> mappedMembers;
Expand All @@ -15,48 +13,9 @@ public AutoJoinPart(IList<Member> mappedMembers, string tableName)
this.mappedMembers = mappedMembers;
}

protected override ComponentPart<TComponent> Component<TComponent>(Member property, Action<ComponentPart<TComponent>> action)
{
mappedMembers.Add(property);

return base.Component(property, action);
}

protected override OneToManyPart<TChild> HasMany<TChild>(Member member)
internal override void OnMemberMapped(Member member)
{
mappedMembers.Add(member);
return base.HasMany<TChild>(member);
}

protected override ManyToManyPart<TChild> HasManyToMany<TChild>(Member property)
{
mappedMembers.Add(property);
return base.HasManyToMany<TChild>(property);
}

protected override OneToOnePart<TOther> HasOne<TOther>(Member property)
{
mappedMembers.Add(property);
return base.HasOne<TOther>(property);
}

protected override PropertyPart Map(Member property, string columnName)
{
mappedMembers.Add(property);
return base.Map(property, columnName);
}

protected override ManyToOnePart<TOther> References<TOther>(Member property, string columnName)
{
mappedMembers.Add(property);
return base.References<TOther>(property, columnName);
}

protected override AnyPart<TOther> ReferencesAny<TOther>(Member property)
{
mappedMembers.Add(property);
return base.ReferencesAny<TOther>(property);
}
}
#pragma warning restore 612,618,672
}
47 changes: 6 additions & 41 deletions src/FluentNHibernate/Automapping/AutoJoinedSubClassPart.cs
Expand Up @@ -7,11 +7,12 @@

namespace FluentNHibernate.Automapping
{
#pragma warning disable 612,618,672
#pragma warning disable 612,618
public class AutoJoinedSubClassPart<T> : JoinedSubClassPart<T>, IAutoClasslike
#pragma warning restore 612,618
{
private readonly MappingProviderStore providers;
private readonly IList<Member> membersMapped = new List<Member>();
private readonly IList<Member> mappedMembers = new List<Member>();

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

protected override OneToManyPart<TChild> HasMany<TChild>(Member property)
internal override void OnMemberMapped(Member member)
{
membersMapped.Add(property);
return base.HasMany<TChild>(property);
}

protected override PropertyPart Map(Member property, string columnName)
{
membersMapped.Add(property);
return base.Map(property, columnName);
}

protected override ManyToOnePart<TOther> References<TOther>(Member property, string columnName)
{
membersMapped.Add(property);
return base.References<TOther>(property, columnName);
}

protected override ManyToManyPart<TChild> HasManyToMany<TChild>(Member property)
{
membersMapped.Add(property);
return base.HasManyToMany<TChild>(property);
}

protected override ComponentPart<TComponent> Component<TComponent>(Member property, Action<ComponentPart<TComponent>> action)
{
membersMapped.Add(property);

if (action == null)
action = c => { };

return base.Component(property, action);
}

protected override OneToOnePart<TOther> HasOne<TOther>(Member property)
{
membersMapped.Add(property);
return base.HasOne<TOther>(property);
mappedMembers.Add(member);
}

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

public IEnumerable<Member> GetIgnoredProperties()
{
return membersMapped;
return mappedMembers;
}
}
#pragma warning restore 612,618,672
}
74 changes: 3 additions & 71 deletions src/FluentNHibernate/Automapping/AutoMapping.cs
Expand Up @@ -93,11 +93,9 @@ void IAutoClasslike.AlterModel(ClassMappingBase mapping)
mapping.AddOrReplaceFilter(filter.GetFilterMapping());
}

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

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

public override IdentityPart Id(Expression<Func<T, object>> memberExpression)
{
mappedMembers.Add(memberExpression.ToMember());
return base.Id(memberExpression);
}

public override CompositeIdentityPart<T> CompositeId()
{
var part = new AutoCompositeIdentityPart<T>(mappedMembers);

providers.CompositeId = part;

return part;
}

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

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

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

[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
protected override ComponentPart<TComponent> Component<TComponent>(Member property, Action<ComponentPart<TComponent>> action)
{
mappedMembers.Add(property);

if (action == null)
action = c => { };

return base.Component(property, action);
}

public override IdentityPart Id(Expression<Func<T, object>> memberExpression, string column)
{
mappedMembers.Add(memberExpression.ToMember());
return base.Id(memberExpression, column);
}

[Obsolete("Do not call this method. Implementation detail mistakenly made public. Will be made private in next version.")]
protected override OneToOnePart<TOther> HasOne<TOther>(Member property)
{
mappedMembers.Add(property);
return base.HasOne<TOther>(property);
}

protected override VersionPart Version(Member property)
{
mappedMembers.Add(property);
return base.Version(property);
}

public AutoJoinedSubClassPart<TSubclass> JoinedSubClass<TSubclass>(string keyColumn, Action<AutoJoinedSubClassPart<TSubclass>> action)
where TSubclass : T
{
Expand Down Expand Up @@ -276,7 +208,7 @@ public void Join(string table, Action<AutoJoinPart<T>> action)
#pragma warning disable 809
// hide this - imports aren't supported in overrides
[Obsolete("Imports aren't supported in overrides.", true)]
public override ImportPart ImportType<TImport>()
public new ImportPart ImportType<TImport>()
{
return null;
}
Expand Down
47 changes: 6 additions & 41 deletions src/FluentNHibernate/Automapping/AutoSubClassPart.cs
Expand Up @@ -7,11 +7,12 @@

namespace FluentNHibernate.Automapping
{
#pragma warning disable 612,618,672
#pragma warning disable 612,618
public class AutoSubClassPart<T> : SubClassPart<T>, IAutoClasslike
#pragma warning restore 612,618
{
private readonly MappingProviderStore providers;
private readonly IList<Member> membersMapped = new List<Member>();
private readonly IList<Member> mappedMembers = new List<Member>();

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

protected override OneToManyPart<TChild> HasMany<TChild>(Member property)
internal override void OnMemberMapped(Member member)
{
membersMapped.Add(property);
return base.HasMany<TChild>(property);
}

protected override PropertyPart Map(Member property, string columnName)
{
membersMapped.Add(property);
return base.Map(property, columnName);
}

protected override ManyToOnePart<TOther> References<TOther>(Member property, string columnName)
{
membersMapped.Add(property);
return base.References<TOther>(property, columnName);
}

protected override ManyToManyPart<TChild> HasManyToMany<TChild>(Member property)
{
membersMapped.Add(property);
return base.HasManyToMany<TChild>(property);
}

protected override ComponentPart<TComponent> Component<TComponent>(Member property, Action<ComponentPart<TComponent>> action)
{
membersMapped.Add(property);

if (action == null)
action = c => { };

return base.Component(property, action);
}

protected override OneToOnePart<TOther> HasOne<TOther>(Member property)
{
membersMapped.Add(property);
return base.HasOne<TOther>(property);
mappedMembers.Add(member);
}

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

public IEnumerable<Member> GetIgnoredProperties()
{
return membersMapped;
return mappedMembers;
}
}
#pragma warning restore 612,618,672
}
3 changes: 0 additions & 3 deletions src/FluentNHibernate/Automapping/IAutoClasslike.cs
@@ -1,7 +1,4 @@
using System;
using System.Collections.Generic;
using System.Reflection;
using FluentNHibernate.Mapping;
using FluentNHibernate.MappingModel.ClassBased;

namespace FluentNHibernate.Automapping
Expand Down
Empty file.
2 changes: 0 additions & 2 deletions src/FluentNHibernate/Automapping/IPropertyIgnorer.cs
@@ -1,6 +1,4 @@
using System;
using System.Reflection;
using FluentNHibernate.Mapping;

namespace FluentNHibernate.Automapping
{
Expand Down
2 changes: 0 additions & 2 deletions src/FluentNHibernate/FluentNHibernate.csproj
Expand Up @@ -87,7 +87,6 @@
<Compile Include="Automapping\Alterations\IAutoMappingAlteration.cs" />
<Compile Include="Automapping\Alterations\IAutoMappingOverride.cs" />
<Compile Include="AssemblyTypeSource.cs" />
<Compile Include="Automapping\AutoCompositeIdentityPart.cs" />
<Compile Include="Automapping\AutoJoinedSubClassPart.cs" />
<Compile Include="Automapping\AutoJoinPart.cs" />
<Compile Include="Automapping\AutoMap.cs" />
Expand All @@ -101,7 +100,6 @@
<Compile Include="Automapping\AutoSubClassPart.cs" />
<Compile Include="Automapping\DefaultAutomappingConfiguration.cs" />
<Compile Include="Automapping\IAutoClasslike.cs" />
<Compile Include="Automapping\IAutoMappingAlteration.cs" />
<Compile Include="Automapping\IAutomappingConfiguration.cs" />
<Compile Include="Automapping\InlineOverride.cs" />
<Compile Include="Automapping\IPropertyIgnorer.cs" />
Expand Down

0 comments on commit 45efeca

Please sign in to comment.