From: <fab...@us...> - 2011-04-20 21:27:39
|
Revision: 5728 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5728&view=rev Author: fabiomaulo Date: 2011-04-20 21:27:33 +0000 (Wed, 20 Apr 2011) Log Message: ----------- Refactoring (+ fix wrong test) 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 20:50:46 UTC (rev 5727) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/AbstractBasePropertyContainerMapper.cs 2011-04-20 21:27:33 UTC (rev 5728) @@ -37,7 +37,7 @@ public virtual void Property(MemberInfo property, Action<IPropertyMapper> mapping) { - if (!property.DeclaringType.IsAssignableFrom(container)) + if (!IsMemberSupportedByMappedContainer(property)) { throw new ArgumentOutOfRangeException("property", "Can't add a property of another graph"); } @@ -46,28 +46,49 @@ AddProperty(hbmProperty); } + protected virtual bool IsMemberSupportedByMappedContainer(MemberInfo property) + { + return property.DeclaringType.IsAssignableFrom(container); + } + public virtual void Component(MemberInfo property, Action<IComponentMapper> mapping) { - var hbm = new HbmComponent {name = property.Name}; + if (!IsMemberSupportedByMappedContainer(property)) + { + throw new ArgumentOutOfRangeException("property", "Can't add a property of another graph"); + } + var hbm = new HbmComponent { name = property.Name }; mapping(new ComponentMapper(hbm, property.GetPropertyOrFieldType(), property, MapDoc)); AddProperty(hbm); } public virtual void Component(MemberInfo property, Action<IDynamicComponentMapper> mapping) { + if (!IsMemberSupportedByMappedContainer(property)) + { + throw new ArgumentOutOfRangeException("property", "Can't add a property of another graph"); + } throw new NotImplementedException(); } public virtual void ManyToOne(MemberInfo property, Action<IManyToOneMapper> mapping) { - var hbm = new HbmManyToOne {name = property.Name}; + if (!IsMemberSupportedByMappedContainer(property)) + { + throw new ArgumentOutOfRangeException("property", "Can't add a property of another graph"); + } + var hbm = new HbmManyToOne { name = property.Name }; mapping(new ManyToOneMapper(property, hbm, MapDoc)); AddProperty(hbm); } public void Any(MemberInfo property, System.Type idTypeOfMetaType, Action<IAnyMapper> mapping) { - var hbm = new HbmAny {name = property.Name}; + if (!IsMemberSupportedByMappedContainer(property)) + { + throw new ArgumentOutOfRangeException("property", "Can't add a property of another graph"); + } + var hbm = new HbmAny { name = property.Name }; mapping(new AnyMapper(property, idTypeOfMetaType, hbm, MapDoc)); AddProperty(hbm); } Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/AbstractPropertyContainerMapperTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/AbstractPropertyContainerMapperTest.cs 2011-04-20 20:50:46 UTC (rev 5727) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/AbstractPropertyContainerMapperTest.cs 2011-04-20 21:27:33 UTC (rev 5728) @@ -88,7 +88,7 @@ public void CallAnyMapper() { var properties = new List<object>(); - var map = new StubPropertyContainerMapper<EntitySimple>(properties); + var map = new StubPropertyContainerMapper<MyClass>(properties); var called = false; map.Any(typeof(MyClass).GetProperty("Reference"), typeof(int), x => called = true); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |