From: <fab...@us...> - 2011-04-04 17:49:32
|
Revision: 5604 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5604&view=rev Author: fabiomaulo Date: 2011-04-04 17:49:26 +0000 (Mon, 04 Apr 2011) Log Message: ----------- JoinMapper full attributes managed Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/JoinMapper.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/JoinMapperTests.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/JoinMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/JoinMapper.cs 2011-04-04 17:31:15 UTC (rev 5603) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/JoinMapper.cs 2011-04-04 17:49:26 UTC (rev 5604) @@ -18,6 +18,7 @@ public class JoinMapper: AbstractPropertyContainerMapper,IJoinMapper { private readonly HbmJoin hbmJoin; + private readonly KeyMapper keyMapper; public JoinMapper(System.Type container, string splitGroupId, HbmJoin hbmJoin, HbmMapping mapDoc) : base(container, mapDoc) { @@ -35,6 +36,11 @@ { throw new ArgumentOutOfRangeException("splitGroupId", "The table-name cant be empty."); } + if (hbmJoin.key == null) + { + hbmJoin.key = new HbmKey { column1 = container.Name.ToLowerInvariant() + "_key" }; + } + keyMapper = new KeyMapper(container, hbmJoin.key); } public event TableNameChangedHandler TableNameChanged; @@ -125,6 +131,7 @@ public void Key(Action<IKeyMapper> keyMapping) { + keyMapping(keyMapper); } public void Inverse(bool value) Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/JoinMapperTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/JoinMapperTests.cs 2011-04-04 17:31:15 UTC (rev 5603) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/JoinMapperTests.cs 2011-04-04 17:49:26 UTC (rev 5604) @@ -176,5 +176,43 @@ mapper.Fetch(FetchKind.Select); hbmJoin.fetch.Should().Be(HbmJoinFetch.Select); } + + [Test] + public void CallKeyMapper() + { + var mapdoc = new HbmMapping(); + var hbmJoin = new HbmJoin(); + var mapper = new JoinMapper(typeof(MyClass), "AA", hbmJoin, mapdoc); + var keyMapperCalled = false; + + mapper.Key(km => keyMapperCalled = true); + + keyMapperCalled.Should().Be.True(); + } + + [Test] + public void WhenCallKeyMapperThenKeyMapperIsNotNull() + { + var mapdoc = new HbmMapping(); + var hbmJoin = new HbmJoin(); + var mapper = new JoinMapper(typeof(MyClass), "AA", hbmJoin, mapdoc); + + mapper.Key(km => km.Should().Not.Be.Null()); + } + + [Test] + public void WhenCallKeyMapperMoreThanOnceThenKeyMapperIsTheSame() + { + var mapdoc = new HbmMapping(); + var hbmJoin = new HbmJoin(); + var mapper = new JoinMapper(typeof(MyClass), "AA", hbmJoin, mapdoc); + IKeyMapper firstCallInstance = null; + IKeyMapper secondCallInstance= null; + + mapper.Key(km => firstCallInstance = km); + mapper.Key(km => secondCallInstance = km); + + firstCallInstance.Should().Be.SameInstanceAs(secondCallInstance); + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |