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(); + hbmGenerator.@class.Should().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. |