|
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 @@
hbm...@cl...().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.
|