From: <fab...@us...> - 2011-04-27 20:51:49
|
Revision: 5776 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5776&view=rev Author: fabiomaulo Date: 2011-04-27 20:51:43 +0000 (Wed, 27 Apr 2011) Log Message: ----------- Minor fix (cleaned mapping when empty natural-id is defined) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ClassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/NaturalIdMapper.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/ComposedIdTests.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/NaturalIdTests.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ClassMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ClassMapper.cs 2011-04-27 18:54:47 UTC (rev 5775) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ClassMapper.cs 2011-04-27 20:51:43 UTC (rev 5776) @@ -196,9 +196,7 @@ { if (naturalIdMapper == null) { - var hbmNaturalId = new HbmNaturalId(); - classMapping.naturalid = hbmNaturalId; - naturalIdMapper = new NaturalIdMapper(Container, hbmNaturalId, MapDoc); + naturalIdMapper = new NaturalIdMapper(Container, classMapping, MapDoc); } naturalIdMapping(naturalIdMapper); } Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/NaturalIdMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/NaturalIdMapper.cs 2011-04-27 18:54:47 UTC (rev 5775) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/NaturalIdMapper.cs 2011-04-27 20:51:43 UTC (rev 5776) @@ -6,11 +6,17 @@ { public class NaturalIdMapper : AbstractBasePropertyContainerMapper, INaturalIdMapper { + private readonly HbmClass classMapping; private readonly HbmNaturalId naturalIdmapping; - public NaturalIdMapper(System.Type rootClass, HbmNaturalId naturalIdmapping, HbmMapping mapDoc) : base(rootClass, mapDoc) + public NaturalIdMapper(System.Type rootClass, HbmClass classMapping, HbmMapping mapDoc) : base(rootClass, mapDoc) { - this.naturalIdmapping = naturalIdmapping; + if (classMapping == null) + { + throw new ArgumentNullException("classMapping"); + } + this.classMapping = classMapping; + naturalIdmapping = new HbmNaturalId(); } #region Overrides of AbstractBasePropertyContainerMapper @@ -21,6 +27,10 @@ { throw new ArgumentNullException("property"); } + if(classMapping.naturalid == null) + { + classMapping.naturalid = naturalIdmapping; + } var toAdd = new[] {property}; naturalIdmapping.Items = naturalIdmapping.Items == null ? toAdd : naturalIdmapping.Items.Concat(toAdd).ToArray(); } Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/ComposedIdTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/ComposedIdTests.cs 2011-04-27 18:54:47 UTC (rev 5775) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/ComposedIdTests.cs 2011-04-27 20:51:43 UTC (rev 5776) @@ -109,10 +109,7 @@ HbmClass hbmClass = hbmMapping.RootClasses[0]; HbmCompositeId hbmCompositId = hbmClass.CompositeId; hbmCompositId.Items.Should().Have.Count.EqualTo(2); - if(hbmClass.naturalid != null) - { - hbmClass.naturalid.Items.Should().Be.Null(); - } + hbmClass.naturalid.Should().Be.Null(); hbmClass.Properties.Should().Be.Empty(); } } Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/NaturalIdTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/NaturalIdTests.cs 2011-04-27 18:54:47 UTC (rev 5775) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/NaturalIdTests.cs 2011-04-27 20:51:43 UTC (rev 5776) @@ -27,7 +27,7 @@ } [Test] - public void WhenDefineRootEntityThenRegister() + public void WhenDefineNaturalIdThenRegister() { var inspector = new ExplicitlyDeclaredModel(); var mapper = new ModelMapper(inspector); @@ -51,5 +51,19 @@ inspector.IsMemberOfNaturalId(For<MyClass>.Property(x => x.MyComponent)).Should().Be.True(); inspector.IsMemberOfNaturalId(For<MyClass>.Property(x => x.Any)).Should().Be.True(); } + + [Test] + public void WhenDefineEmptyNaturalIdThenNoMapIt() + { + var mapper = new ModelMapper(); + mapper.Class<MyClass>(map => + { + map.Id(x => x.Id, idmap => { }); + map.NaturalId(nidm =>{}); + }); + var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) }); + var hbmClass = hbmMapping.RootClasses[0]; + hbmClass.naturalid.Should().Be.Null(); + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |