Skip to content

Commit a3fef76

Browse files
committed
by-code : Breaking change with Alpha2 to map private/protected members
SVN: trunk@5789
1 parent 70bc091 commit a3fef76

File tree

7 files changed

+23
-12
lines changed

7 files changed

+23
-12
lines changed

src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyToFieldAccessorTest.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,8 @@ public int SetOnlyProperty
5050
[Test]
5151
public void WhenFieldAccessToField()
5252
{
53-
var member = typeof(MyClass).GetField("aField",BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
5453
var mapper = new ConventionModelMapper();
55-
mapper.Class<MyClass>(mc => mc.Property(member, x => { }));
54+
mapper.Class<MyClass>(mc => mc.Property("aField", x => { }));
5655
var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) });
5756

5857
var hbmClass = hbmMapping.RootClasses[0];

src/NHibernate.Test/MappingByCode/ExpliticMappingTests/MappingOfPrivateMembersOnRootEntity.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void MapClassWithIdAndProperty()
2525
map.Column("MyClassId");
2626
map.Generator(Generators.HighLow, gmap => gmap.Params(new { max_low = 100 }));
2727
});
28-
ca.Property(ForClass<MyClass>.Field("something"), map => map.Length(150));
28+
ca.Property("something", map => map.Length(150));
2929
});
3030
var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) });
3131
var hbmClass = hbmMapping.RootClasses[0];

src/NHibernate.Test/MappingByCode/MixAutomapping/PropertiesExclusionTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public void IncludesFieldsWhenExplicitDeclared()
8484
{
8585
var autoinspector = new SimpleModelInspector();
8686
var mapper = new ModelMapper(autoinspector);
87-
mapper.Class<MyEntity>(map => map.Property(ForClass<MyEntity>.Field("pizza"), x => { }));
87+
mapper.Class<MyEntity>(map => map.Property("pizza", x => { }));
8888
var inspector = (IModelInspector)autoinspector;
8989

9090
var pi = typeof(MyEntity).GetField("pizza", BindingFlags.Instance | BindingFlags.NonPublic);

src/NHibernate/Mapping/ByCode/IPlainPropertyContainerMapper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public interface IMinimalPlainPropertyContainerMapper<TContainer>
2828
{
2929
void Property<TProperty>(Expression<Func<TContainer, TProperty>> property);
3030
void Property<TProperty>(Expression<Func<TContainer, TProperty>> property, Action<IPropertyMapper> mapping);
31-
void Property(FieldInfo member, Action<IPropertyMapper> mapping);
31+
void Property(string notVidiblePropertyOrFieldName, Action<IPropertyMapper> mapping);
3232

3333
void ManyToOne<TProperty>(Expression<Func<TContainer, TProperty>> property, Action<IManyToOneMapper> mapping) where TProperty : class;
3434
void ManyToOne<TProperty>(Expression<Func<TContainer, TProperty>> property) where TProperty : class;

src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinCustomizer.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,12 @@ protected override void RegisterPropertyMapping<TProperty>(Expression<Func<TEnti
117117
base.RegisterPropertyMapping(property, mapping);
118118
}
119119

120-
protected override void RegisterFieldMapping(FieldInfo member, Action<IPropertyMapper> mapping)
120+
protected override void RegisterNoVisiblePropertyMapping(string notVidiblePropertyOrFieldName, System.Action<IPropertyMapper> mapping)
121121
{
122+
MemberInfo member = typeof(TEntity).GetPropertyOrFieldMatchingName(notVidiblePropertyOrFieldName);
123+
122124
ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
123-
base.RegisterFieldMapping(member, mapping);
125+
base.RegisterNoVisiblePropertyMapping(notVidiblePropertyOrFieldName, mapping);
124126
}
125127

126128
protected override void RegisterComponentMapping<TComponent>(Expression<Func<TEntity, TComponent>> property, Action<IComponentMapper<TComponent>> mapping)

src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/NaturalIdCustomizer.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,14 @@ protected override void RegisterPropertyMapping<TProperty>(System.Linq.Expressio
1616
base.RegisterPropertyMapping(property, mapping);
1717
}
1818

19-
protected override void RegisterFieldMapping(FieldInfo member, System.Action<IPropertyMapper> mapping)
19+
protected override void RegisterNoVisiblePropertyMapping(string notVidiblePropertyOrFieldName, System.Action<IPropertyMapper> mapping)
2020
{
21+
MemberInfo member = typeof(TEntity).GetPropertyOrFieldMatchingName(notVidiblePropertyOrFieldName);
22+
MemberInfo memberOf = member.GetMemberFromReflectedType(typeof(TEntity));
23+
2124
ExplicitDeclarationsHolder.AddAsNaturalId(member);
22-
base.RegisterFieldMapping(member, mapping);
25+
ExplicitDeclarationsHolder.AddAsNaturalId(memberOf);
26+
base.RegisterNoVisiblePropertyMapping(notVidiblePropertyOrFieldName, mapping);
2327
}
2428

2529
protected override void RegisterComponentMapping<TComponent>(System.Linq.Expressions.Expression<System.Func<TEntity, TComponent>> property, System.Action<IComponentMapper<TComponent>> mapping)

src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,21 @@ protected virtual void RegisterPropertyMapping<TProperty>(Expression<Func<TEntit
4949
explicitDeclarationsHolder.AddAsProperty(memberOf);
5050
}
5151

52-
public void Property(FieldInfo member, Action<IPropertyMapper> mapping)
52+
public void Property(string notVidiblePropertyOrFieldName, Action<IPropertyMapper> mapping)
5353
{
54-
RegisterFieldMapping(member, mapping);
54+
RegisterNoVisiblePropertyMapping(notVidiblePropertyOrFieldName, mapping);
5555
}
5656

57-
protected virtual void RegisterFieldMapping(FieldInfo member, Action<IPropertyMapper> mapping)
57+
protected virtual void RegisterNoVisiblePropertyMapping(string notVidiblePropertyOrFieldName, Action<IPropertyMapper> mapping)
5858
{
59+
// even seems repetitive, before unify this registration with the registration using Expression take in account that reflection operations
60+
// done unsing expressions are faster than those done with pure reflection.
61+
MemberInfo member = typeof(TEntity).GetPropertyOrFieldMatchingName(notVidiblePropertyOrFieldName);
62+
MemberInfo memberOf = member.GetMemberFromReflectedType(typeof(TEntity));
5963
CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, member), mapping);
64+
CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, memberOf), mapping);
6065
explicitDeclarationsHolder.AddAsProperty(member);
66+
explicitDeclarationsHolder.AddAsProperty(memberOf);
6167
}
6268

6369
public void Component<TComponent>(Expression<Func<TEntity, TComponent>> property,

0 commit comments

Comments
 (0)