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. |