|
From: <fab...@us...> - 2011-04-06 17:05:26
|
Revision: 5624
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5624&view=rev
Author: fabiomaulo
Date: 2011-04-06 17:05:20 +0000 (Wed, 06 Apr 2011)
Log Message:
-----------
Conformist mapping for root-class
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/ConformistMappingRegistrationTests/
trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/ConformistMappingRegistrationTests/ClassMappingRegistrationTest.cs
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs 2011-04-06 16:07:13 UTC (rev 5623)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs 2011-04-06 17:05:20 UTC (rev 5624)
@@ -1590,5 +1590,22 @@
}
#endregion
+
+ public void AddMapping<T>() where T: IConformistHoldersProvider, new()
+ {
+ var mapping = new T();
+ var thisCustomizerHolder = customizerHolder as CustomizersHolder;
+ if (thisCustomizerHolder == null)
+ {
+ throw new NotSupportedException("To merge 'conformist' mappings, the instance of ICustomizersHolder, provided in the ModelMapper constructor, have to be a CustomizersHolder instance.");
+ }
+ var otherCustomizerHolder = mapping.CustomizersHolder as CustomizersHolder;
+ if(otherCustomizerHolder == null)
+ {
+ throw new NotSupportedException("The mapping class have to provide a CustomizersHolder instance.");
+ }
+ thisCustomizerHolder.Merge(otherCustomizerHolder);
+ explicitDeclarationsHolder.Merge(mapping.ExplicitDeclarationsHolder);
+ }
}
}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/ConformistMappingRegistrationTests/ClassMappingRegistrationTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/ConformistMappingRegistrationTests/ClassMappingRegistrationTest.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/ConformistMappingRegistrationTests/ClassMappingRegistrationTest.cs 2011-04-06 17:05:20 UTC (rev 5624)
@@ -0,0 +1,53 @@
+using System.Linq;
+using NHibernate.Cfg.MappingSchema;
+using NUnit.Framework;
+using NHibernate.Mapping.ByCode;
+using NHibernate.Mapping.ByCode.Conformist;
+using SharpTestsEx;
+
+namespace NHibernate.Test.MappingByCode.ExpliticMappingTests.ConformistMappingRegistrationTests
+{
+ public class ClassMappingRegistrationTest
+ {
+ public class MyClass
+ {
+ public int Id { get; set; }
+ public string Something { get; set; }
+ }
+
+ private class MyClassMap: ClassMapping<MyClass>
+ {
+ public MyClassMap()
+ {
+ Id(x => x.Id, map =>
+ {
+ map.Column("MyClassId");
+ map.Generator(Generators.HighLow, gmap => gmap.Params(new { max_low = 100 }));
+ });
+ Property(x => x.Something, map => map.Length(150));
+ }
+ }
+
+ [Test]
+ public void WhenRegisterClassMappingThenMapTheClass()
+ {
+ var mapper = new ModelMapper();
+ mapper.AddMapping<MyClassMap>();
+ var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) });
+
+ var hbmClass = hbmMapping.RootClasses[0];
+ hbmClass.Should().Not.Be.Null();
+ var hbmId = hbmClass.Id;
+ hbmId.Should().Not.Be.Null();
+ hbmId.name.Should().Be("Id");
+ var hbmGenerator = hbmId.generator;
+ hbmGenerator.Should().Not.Be.Null();
+ hbm...@cl...().Be("hilo");
+ hbmGenerator.param[0].name.Should().Be("max_low");
+ hbmGenerator.param[0].GetText().Should().Be("100");
+ var hbmProperty = hbmClass.Properties.OfType<HbmProperty>().Single();
+ hbmProperty.name.Should().Be("Something");
+ hbmProperty.length.Should().Be("150");
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-06 16:07:13 UTC (rev 5623)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-06 17:05:20 UTC (rev 5624)
@@ -508,6 +508,7 @@
<Compile Include="Linq\ByMethod\SumTests.cs" />
<Compile Include="Logging\Log4NetLoggerTest.cs" />
<Compile Include="Logging\LoggerProviderTest.cs" />
+ <Compile Include="MappingByCode\ExpliticMappingTests\ConformistMappingRegistrationTests\ClassMappingRegistrationTest.cs" />
<Compile Include="MappingByCode\CustomizerHolderMergeTest.cs" />
<Compile Include="MappingByCode\ExplicitlyDeclaredModelTests\SplitPropertiesRegistrationTests.cs" />
<Compile Include="MappingByCode\ExpliticMappingTests\BasicMappingOfSimpleClass.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|