|
From: <fab...@us...> - 2011-04-20 20:31:28
|
Revision: 5726
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5726&view=rev
Author: fabiomaulo
Date: 2011-04-20 20:31:21 +0000 (Wed, 20 Apr 2011)
Log Message:
-----------
Add property to dyn-comp
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/DynamicComponentMapper.cs
trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/DynamicComponentMapperTests/DynCompAttributesSettingTest.cs
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/DynamicComponentMapper.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/DynamicComponentMapper.cs 2011-04-20 19:28:30 UTC (rev 5725)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/DynamicComponentMapper.cs 2011-04-20 20:31:21 UTC (rev 5726)
@@ -1,4 +1,5 @@
using System;
+using System.Linq;
using System.Reflection;
using NHibernate.Cfg.MappingSchema;
@@ -7,17 +8,24 @@
public class DynamicComponentMapper : IDynamicComponentMapper
{
private readonly HbmDynamicComponent component;
+ private readonly HbmMapping mapDoc;
private readonly IAccessorPropertyMapper accessorPropertyMapper;
public DynamicComponentMapper(HbmDynamicComponent component, MemberInfo declaringTypeMember, HbmMapping mapDoc)
{
this.component = component;
+ this.mapDoc = mapDoc;
accessorPropertyMapper = new AccessorPropertyMapper(declaringTypeMember.DeclaringType, declaringTypeMember.Name, x => component.access = x);
}
- protected void AddProperty(object property)
+ private void AddProperty(object property)
{
- throw new NotImplementedException();
+ if (property == null)
+ {
+ throw new ArgumentNullException("property");
+ }
+ var toAdd = new[] { property };
+ component.Items = component.Items == null ? toAdd : component.Items.Concat(toAdd).ToArray();
}
public void Access(Accessor accessor)
@@ -72,7 +80,9 @@
public void Property(MemberInfo property, Action<IPropertyMapper> mapping)
{
- throw new NotImplementedException();
+ var hbmProperty = new HbmProperty { name = property.Name };
+ mapping(new PropertyMapper(property, hbmProperty));
+ AddProperty(hbmProperty);
}
public void Component(MemberInfo property, Action<IComponentMapper> mapping)
Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/DynamicComponentMapperTests/DynCompAttributesSettingTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/DynamicComponentMapperTests/DynCompAttributesSettingTest.cs 2011-04-20 19:28:30 UTC (rev 5725)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/DynamicComponentMapperTests/DynCompAttributesSettingTest.cs 2011-04-20 20:31:21 UTC (rev 5726)
@@ -1,4 +1,5 @@
using System.Collections;
+using System.Linq;
using NHibernate.Cfg.MappingSchema;
using NHibernate.Mapping.ByCode;
using NHibernate.Mapping.ByCode.Impl;
@@ -62,5 +63,18 @@
mapper.OptimisticLock(false);
component.OptimisticLock.Should().Be.False();
}
+
+ [Test]
+ public void CanAddSimpleProperty()
+ {
+ var mapdoc = new HbmMapping();
+ var component = new HbmDynamicComponent();
+ var mapper = new DynamicComponentMapper(component, For<Person>.Property(p => p.Info), mapdoc);
+ var dynObject = new { Pizza = 5 };
+ mapper.Property(dynObject.GetType().GetProperty("Pizza"), x => { });
+
+ component.Properties.Single().Should().Be.OfType<HbmProperty>().And.ValueOf.Name.Should().Be.EqualTo("Pizza");
+ }
+
}
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|