|
From: <fab...@us...> - 2011-04-20 21:59:30
|
Revision: 5730
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5730&view=rev
Author: fabiomaulo
Date: 2011-04-20 21:59:24 +0000 (Wed, 20 Apr 2011)
Log Message:
-----------
Entities and Component mappers supporting dynamic-component
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/AbstractBasePropertyContainerMapper.cs
trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/AbstractPropertyContainerMapperTest.cs
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/AbstractBasePropertyContainerMapper.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/AbstractBasePropertyContainerMapper.cs 2011-04-20 21:46:13 UTC (rev 5729)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/AbstractBasePropertyContainerMapper.cs 2011-04-20 21:59:24 UTC (rev 5730)
@@ -68,7 +68,9 @@
{
throw new ArgumentOutOfRangeException("property", "Can't add a property of another graph");
}
- throw new NotImplementedException();
+ var hbm = new HbmDynamicComponent { name = property.Name };
+ mapping(new DynamicComponentMapper(hbm, property, MapDoc));
+ AddProperty(hbm);
}
public virtual void ManyToOne(MemberInfo property, Action<IManyToOneMapper> mapping)
Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/AbstractPropertyContainerMapperTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/AbstractPropertyContainerMapperTest.cs 2011-04-20 21:46:13 UTC (rev 5729)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/AbstractPropertyContainerMapperTest.cs 2011-04-20 21:59:24 UTC (rev 5730)
@@ -1,7 +1,9 @@
using System;
+using System.Collections;
using System.Collections.Generic;
using System.Linq;
using NHibernate.Cfg.MappingSchema;
+using NHibernate.Mapping.ByCode;
using NHibernate.Mapping.ByCode.Impl;
using NUnit.Framework;
using SharpTestsEx;
@@ -31,6 +33,10 @@
{
public IDictionary<string, string> Dictionary { get; set; }
}
+ private class MyClassWithDynamic
+ {
+ public IDictionary DynCompo { get; set; }
+ }
[Test]
public void CantCreateWithoutHbmMapping()
@@ -111,6 +117,25 @@
elementRelationCalled.Should().Be.True();
}
+ [Test]
+ public void AddDynamicComponentProperty()
+ {
+ var properties = new List<object>();
+ var map = new StubPropertyContainerMapper<MyClassWithDynamic>(properties);
+ map.Component(For<MyClassWithDynamic>.Property(x => x.DynCompo), (IDynamicComponentMapper cp) => { });
+ properties.Single().Should().Be.OfType<HbmDynamicComponent>().And.ValueOf.Name.Should().Be.EqualTo("DynCompo");
+ }
+
+ [Test]
+ public void CallDynamicComponentMapper()
+ {
+ var properties = new List<object>();
+ var map = new StubPropertyContainerMapper<MyClassWithDynamic>(properties);
+ var called = false;
+ map.Component(For<MyClassWithDynamic>.Property(x=> x.DynCompo), (IDynamicComponentMapper cp) => called = true);
+ called.Should().Be.True();
+ }
+
private class HackPropertyContainerMapper : AbstractPropertyContainerMapper
{
public HackPropertyContainerMapper(System.Type container, HbmMapping mapDoc) : base(container, mapDoc) {}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|