From: <fab...@us...> - 2011-04-10 18:15:32
|
Revision: 5652 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5652&view=rev Author: fabiomaulo Date: 2011-04-10 18:15:26 +0000 (Sun, 10 Apr 2011) Log Message: ----------- SimpleModelInspector with default pattern to discover POID Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/PoidTests.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs 2011-04-10 17:55:04 UTC (rev 5651) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs 2011-04-10 18:15:26 UTC (rev 5652) @@ -20,7 +20,7 @@ private Func<System.Type, IEnumerable<string>, IEnumerable<string>> splitsForType = (t, declared) => declared; private Func<System.Type, bool, bool> isComponent = (t, declared) => declared; - private Func<MemberInfo, bool, bool> isPersistentId = (m, declared) => declared; + private Func<MemberInfo, bool, bool> isPersistentId; private Func<MemberInfo, bool, bool> isPersistentProperty = (m, declared) => declared; private Func<MemberInfo, bool, bool> isVersion = (m, declared) => declared; @@ -39,6 +39,20 @@ private Func<MemberInfo, bool, bool> isIdBag = (m, declared) => declared; private Func<MemberInfo, bool, bool> isList = (m, declared) => declared; + public SimpleModelInspector() + { + isPersistentId = (m, declared) => declared || MatchPoIdPattern(m); + } + + protected bool MatchPoIdPattern(MemberInfo subject) + { + var name = subject.Name; + return name.Equals("id", StringComparison.InvariantCultureIgnoreCase) + || name.Equals("poid", StringComparison.InvariantCultureIgnoreCase) + || name.Equals("oid", StringComparison.InvariantCultureIgnoreCase) + || (name.StartsWith(subject.DeclaringType.Name) && name.Equals(subject.DeclaringType.Name + "id", StringComparison.InvariantCultureIgnoreCase)); + } + #region IModelExplicitDeclarationsHolder Members IEnumerable<System.Type> IModelExplicitDeclarationsHolder.RootEntities Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/PoidTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/PoidTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/PoidTests.cs 2011-04-10 18:15:26 UTC (rev 5652) @@ -0,0 +1,60 @@ +using NHibernate.Mapping.ByCode; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.MixAutomapping +{ + public class PoidTests + { + private class MyClass + { + public int EntityIdentificator { get; set; } + } + private class TestEntity + { + public int Id { get; set; } + public int id { get; set; } + public int PoId { get; set; } + public int POID { get; set; } + public int OId { get; set; } + public int TestEntityId { get; set; } + public int testEntityId { get; set; } + public int Something { get; set; } + } + + [Test] + public void WhenExplicitDeclaredThenMatch() + { + var autoinspector = new SimpleModelInspector(); + var mapper = new ModelMapper(autoinspector); + mapper.Class<MyClass>(map => map.Id(x => x.EntityIdentificator)); + + var inspector = (IModelInspector)autoinspector; + inspector.IsPersistentId(typeof(MyClass).GetProperty("EntityIdentificator")).Should().Be.True(); + } + + [Test] + public void WhenNotExplicitlyDeclaredMatchDefaultDelegate() + { + var autoinspector = new SimpleModelInspector(); + + var inspector = (IModelInspector)autoinspector; + inspector.IsPersistentId(typeof(TestEntity).GetProperty("Id")).Should().Be.True(); + inspector.IsPersistentId(typeof(TestEntity).GetProperty("id")).Should().Be.True(); + inspector.IsPersistentId(typeof(TestEntity).GetProperty("PoId")).Should().Be.True(); + inspector.IsPersistentId(typeof(TestEntity).GetProperty("POID")).Should().Be.True(); + inspector.IsPersistentId(typeof(TestEntity).GetProperty("OId")).Should().Be.True(); + inspector.IsPersistentId(typeof(TestEntity).GetProperty("TestEntityId")).Should().Be.True(); + } + + [Test] + public void WhenNotExplicitlyDeclaredThenNoMatchPropertiesOutOfDefaultDelegate() + { + var autoinspector = new SimpleModelInspector(); + + var inspector = (IModelInspector)autoinspector; + inspector.IsPersistentId(typeof(TestEntity).GetProperty("testEntityId")).Should().Be.False(); + inspector.IsPersistentId(typeof(TestEntity).GetProperty("Something")).Should().Be.False(); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-10 17:55:04 UTC (rev 5651) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-10 18:15:26 UTC (rev 5652) @@ -541,6 +541,7 @@ <Compile Include="MappingByCode\MappersTests\IdBagMapperTest.cs" /> <Compile Include="MappingByCode\MappersTests\JoinMapperTests.cs" /> <Compile Include="MappingByCode\MappersTests\SubclassMapperWithJoinPropertiesTest.cs" /> + <Compile Include="MappingByCode\MixAutomapping\PoidTests.cs" /> <Compile Include="MappingByCode\ModelExplicitDeclarationsHolderMergeTest.cs" /> <Compile Include="MappingByCode\NatureDemo\Naturalness\Address.cs" /> <Compile Include="MappingByCode\NatureDemo\Naturalness\Animal.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |