|
From: <fab...@us...> - 2011-04-29 18:28:23
|
Revision: 5789
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5789&view=rev
Author: fabiomaulo
Date: 2011-04-29 18:28:17 +0000 (Fri, 29 Apr 2011)
Log Message:
-----------
by-code : Breaking change with Alpha2 to map private/protected members
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPlainPropertyContainerMapper.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinCustomizer.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/NaturalIdCustomizer.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs
trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyToFieldAccessorTest.cs
trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/MappingOfPrivateMembersOnRootEntity.cs
trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/PropertiesExclusionTests.cs
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPlainPropertyContainerMapper.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPlainPropertyContainerMapper.cs 2011-04-29 16:51:56 UTC (rev 5788)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPlainPropertyContainerMapper.cs 2011-04-29 18:28:17 UTC (rev 5789)
@@ -28,7 +28,7 @@
{
void Property<TProperty>(Expression<Func<TContainer, TProperty>> property);
void Property<TProperty>(Expression<Func<TContainer, TProperty>> property, Action<IPropertyMapper> mapping);
- void Property(FieldInfo member, Action<IPropertyMapper> mapping);
+ void Property(string notVidiblePropertyOrFieldName, Action<IPropertyMapper> mapping);
void ManyToOne<TProperty>(Expression<Func<TContainer, TProperty>> property, Action<IManyToOneMapper> mapping) where TProperty : class;
void ManyToOne<TProperty>(Expression<Func<TContainer, TProperty>> property) where TProperty : class;
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinCustomizer.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinCustomizer.cs 2011-04-29 16:51:56 UTC (rev 5788)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinCustomizer.cs 2011-04-29 18:28:17 UTC (rev 5789)
@@ -117,10 +117,12 @@
base.RegisterPropertyMapping(property, mapping);
}
- protected override void RegisterFieldMapping(FieldInfo member, Action<IPropertyMapper> mapping)
+ protected override void RegisterNoVisiblePropertyMapping(string notVidiblePropertyOrFieldName, System.Action<IPropertyMapper> mapping)
{
+ MemberInfo member = typeof(TEntity).GetPropertyOrFieldMatchingName(notVidiblePropertyOrFieldName);
+
ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
- base.RegisterFieldMapping(member, mapping);
+ base.RegisterNoVisiblePropertyMapping(notVidiblePropertyOrFieldName, mapping);
}
protected override void RegisterComponentMapping<TComponent>(Expression<Func<TEntity, TComponent>> property, Action<IComponentMapper<TComponent>> mapping)
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/NaturalIdCustomizer.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/NaturalIdCustomizer.cs 2011-04-29 16:51:56 UTC (rev 5788)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/NaturalIdCustomizer.cs 2011-04-29 18:28:17 UTC (rev 5789)
@@ -16,10 +16,14 @@
base.RegisterPropertyMapping(property, mapping);
}
- protected override void RegisterFieldMapping(FieldInfo member, System.Action<IPropertyMapper> mapping)
+ protected override void RegisterNoVisiblePropertyMapping(string notVidiblePropertyOrFieldName, System.Action<IPropertyMapper> mapping)
{
+ MemberInfo member = typeof(TEntity).GetPropertyOrFieldMatchingName(notVidiblePropertyOrFieldName);
+ MemberInfo memberOf = member.GetMemberFromReflectedType(typeof(TEntity));
+
ExplicitDeclarationsHolder.AddAsNaturalId(member);
- base.RegisterFieldMapping(member, mapping);
+ ExplicitDeclarationsHolder.AddAsNaturalId(memberOf);
+ base.RegisterNoVisiblePropertyMapping(notVidiblePropertyOrFieldName, mapping);
}
protected override void RegisterComponentMapping<TComponent>(System.Linq.Expressions.Expression<System.Func<TEntity, TComponent>> property, System.Action<IComponentMapper<TComponent>> mapping)
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs 2011-04-29 16:51:56 UTC (rev 5788)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs 2011-04-29 18:28:17 UTC (rev 5789)
@@ -49,15 +49,21 @@
explicitDeclarationsHolder.AddAsProperty(memberOf);
}
- public void Property(FieldInfo member, Action<IPropertyMapper> mapping)
+ public void Property(string notVidiblePropertyOrFieldName, Action<IPropertyMapper> mapping)
{
- RegisterFieldMapping(member, mapping);
+ RegisterNoVisiblePropertyMapping(notVidiblePropertyOrFieldName, mapping);
}
- protected virtual void RegisterFieldMapping(FieldInfo member, Action<IPropertyMapper> mapping)
+ protected virtual void RegisterNoVisiblePropertyMapping(string notVidiblePropertyOrFieldName, Action<IPropertyMapper> mapping)
{
+ // even seems repetitive, before unify this registration with the registration using Expression take in account that reflection operations
+ // done unsing expressions are faster than those done with pure reflection.
+ MemberInfo member = typeof(TEntity).GetPropertyOrFieldMatchingName(notVidiblePropertyOrFieldName);
+ MemberInfo memberOf = member.GetMemberFromReflectedType(typeof(TEntity));
CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, member), mapping);
+ CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, memberOf), mapping);
explicitDeclarationsHolder.AddAsProperty(member);
+ explicitDeclarationsHolder.AddAsProperty(memberOf);
}
public void Component<TComponent>(Expression<Func<TEntity, TComponent>> property,
Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyToFieldAccessorTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyToFieldAccessorTest.cs 2011-04-29 16:51:56 UTC (rev 5788)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ConventionModelMapperTests/PropertyToFieldAccessorTest.cs 2011-04-29 18:28:17 UTC (rev 5789)
@@ -50,9 +50,8 @@
[Test]
public void WhenFieldAccessToField()
{
- var member = typeof(MyClass).GetField("aField",BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
var mapper = new ConventionModelMapper();
- mapper.Class<MyClass>(mc => mc.Property(member, x => { }));
+ mapper.Class<MyClass>(mc => mc.Property("aField", x => { }));
var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) });
var hbmClass = hbmMapping.RootClasses[0];
Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/MappingOfPrivateMembersOnRootEntity.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/MappingOfPrivateMembersOnRootEntity.cs 2011-04-29 16:51:56 UTC (rev 5788)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/MappingOfPrivateMembersOnRootEntity.cs 2011-04-29 18:28:17 UTC (rev 5789)
@@ -25,7 +25,7 @@
map.Column("MyClassId");
map.Generator(Generators.HighLow, gmap => gmap.Params(new { max_low = 100 }));
});
- ca.Property(ForClass<MyClass>.Field("something"), map => map.Length(150));
+ ca.Property("something", map => map.Length(150));
});
var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) });
var hbmClass = hbmMapping.RootClasses[0];
Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/PropertiesExclusionTests.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/PropertiesExclusionTests.cs 2011-04-29 16:51:56 UTC (rev 5788)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/PropertiesExclusionTests.cs 2011-04-29 18:28:17 UTC (rev 5789)
@@ -84,7 +84,7 @@
{
var autoinspector = new SimpleModelInspector();
var mapper = new ModelMapper(autoinspector);
- mapper.Class<MyEntity>(map => map.Property(ForClass<MyEntity>.Field("pizza"), x => { }));
+ mapper.Class<MyEntity>(map => map.Property("pizza", x => { }));
var inspector = (IModelInspector)autoinspector;
var pi = typeof(MyEntity).GetField("pizza", BindingFlags.Instance | BindingFlags.NonPublic);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|