From: <fab...@us...> - 2011-04-29 21:31:46
|
Revision: 5791 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5791&view=rev Author: fabiomaulo Date: 2011-04-29 21:31:40 +0000 (Fri, 29 Apr 2011) Log Message: ----------- Class Customizers with mapping of not visible id/version Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/MappingOfPrivateMembersOnRootEntity.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs 2011-04-29 21:16:22 UTC (rev 5790) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs 2011-04-29 21:31:40 UTC (rev 5791) @@ -40,10 +40,12 @@ { void Id<TProperty>(Expression<Func<TEntity, TProperty>> idProperty); void Id<TProperty>(Expression<Func<TEntity, TProperty>> idProperty, Action<IIdMapper> idMapper); - void Id(FieldInfo idProperty, Action<IIdMapper> idMapper); + void Id(string notVidiblePropertyOrFieldName, Action<IIdMapper> idMapper); void ComponentAsId<TComponent>(Expression<Func<TEntity, TComponent>> idProperty) where TComponent : class; void ComponentAsId<TComponent>(Expression<Func<TEntity, TComponent>> idProperty, Action<IComponentAsIdMapper<TComponent>> idMapper) where TComponent : class; + void ComponentAsId<TComponent>(string notVidiblePropertyOrFieldName) where TComponent : class; + void ComponentAsId<TComponent>(string notVidiblePropertyOrFieldName, Action<IComponentAsIdMapper<TComponent>> idMapper) where TComponent : class; void ComposedId(Action<IComposedIdMapper<TEntity>> idPropertiesMapping); @@ -54,6 +56,7 @@ void Schema(string schemaName); void Mutable(bool isMutable); void Version<TProperty>(Expression<Func<TEntity, TProperty>> versionProperty, Action<IVersionMapper> versionMapping); + void Version(string notVidiblePropertyOrFieldName, Action<IVersionMapper> versionMapping); void NaturalId(Action<IBasePlainPropertyContainerMapper<TEntity>> naturalIdPropertiesMapping, Action<INaturalIdAttributesMapper> naturalIdMapping); void NaturalId(Action<IBasePlainPropertyContainerMapper<TEntity>> naturalIdPropertiesMapping); void Cache(Action<ICacheMapper> cacheMapping); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs 2011-04-29 21:16:22 UTC (rev 5790) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs 2011-04-29 21:31:40 UTC (rev 5791) @@ -43,13 +43,15 @@ CustomizersHolder.AddCustomizer(typeof (TEntity), m => m.Id(member, idMapper)); } - public void Id(FieldInfo idProperty, Action<IIdMapper> idMapper) + public void Id(string notVidiblePropertyOrFieldName, Action<IIdMapper> idMapper) { - if (idProperty != null) + MemberInfo member = null; + if (notVidiblePropertyOrFieldName != null) { - ExplicitDeclarationsHolder.AddAsPoid(idProperty); + member = typeof(TEntity).GetPropertyOrFieldMatchingName(notVidiblePropertyOrFieldName); + ExplicitDeclarationsHolder.AddAsPoid(member); } - CustomizersHolder.AddCustomizer(typeof(TEntity), m => m.Id(idProperty, idMapper)); + CustomizersHolder.AddCustomizer(typeof(TEntity), m => m.Id(member, idMapper)); } public void ComponentAsId<TComponent>(Expression<Func<TEntity, TComponent>> idProperty) where TComponent : class @@ -64,6 +66,18 @@ idMapper(new ComponentAsIdCustomizer<TComponent>(ExplicitDeclarationsHolder, CustomizersHolder, propertyPath)); } + public void ComponentAsId<TComponent>(string notVidiblePropertyOrFieldName) where TComponent : class + { + ComponentAsId<TComponent>(notVidiblePropertyOrFieldName, x => { }); + } + + public void ComponentAsId<TComponent>(string notVidiblePropertyOrFieldName, Action<IComponentAsIdMapper<TComponent>> idMapper) where TComponent : class + { + var member = typeof(TEntity).GetPropertyOrFieldMatchingName(notVidiblePropertyOrFieldName); + var propertyPath = new PropertyPath(null, member); + idMapper(new ComponentAsIdCustomizer<TComponent>(ExplicitDeclarationsHolder, CustomizersHolder, propertyPath)); + } + public void ComposedId(Action<IComposedIdMapper<TEntity>> idPropertiesMapping) { idPropertiesMapping(new ComposedIdCustomizer<TEntity>(ExplicitDeclarationsHolder, CustomizersHolder)); @@ -110,6 +124,13 @@ CustomizersHolder.AddCustomizer(typeof(TEntity), (IClassMapper m) => m.Version(member, versionMapping)); } + public void Version(string notVidiblePropertyOrFieldName, Action<IVersionMapper> versionMapping) + { + var member = typeof(TEntity).GetPropertyOrFieldMatchingName(notVidiblePropertyOrFieldName); + ExplicitDeclarationsHolder.AddAsVersionProperty(member); + CustomizersHolder.AddCustomizer(typeof(TEntity), (IClassMapper m) => m.Version(member, versionMapping)); + } + public void NaturalId(Action<IBasePlainPropertyContainerMapper<TEntity>> naturalIdPropertiesMapping, Action<INaturalIdAttributesMapper> naturalIdMapping) { naturalIdPropertiesMapping(new NaturalIdCustomizer<TEntity>(ExplicitDeclarationsHolder, CustomizersHolder)); Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/MappingOfPrivateMembersOnRootEntity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/MappingOfPrivateMembersOnRootEntity.cs 2011-04-29 21:16:22 UTC (rev 5790) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/MappingOfPrivateMembersOnRootEntity.cs 2011-04-29 21:31:40 UTC (rev 5791) @@ -11,6 +11,7 @@ public class MyClass { private int id; + private int version; private string something; } @@ -20,11 +21,12 @@ var mapper = new ModelMapper(); mapper.Class<MyClass>(ca => { - ca.Id(ForClass<MyClass>.Field("id"), map => + ca.Id("id", map => { map.Column("MyClassId"); map.Generator(Generators.HighLow, gmap => gmap.Params(new { max_low = 100 })); }); + ca.Version("version", map => { }); ca.Property("something", map => map.Length(150)); }); var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) }); @@ -39,6 +41,8 @@ hbmGenerator.@class.Should().Be("hilo"); hbmGenerator.param[0].name.Should().Be("max_low"); hbmGenerator.param[0].GetText().Should().Be("100"); + var hbmVersion = hbmClass.Version; + hbmVersion.name.Should().Be("version"); var hbmProperty = hbmClass.Properties.OfType<HbmProperty>().Single(); hbmProperty.name.Should().Be("something"); hbmProperty.access.Should().Be("field"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |