|
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.
|