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