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