|
From: <fab...@us...> - 2011-04-27 14:36:22
|
Revision: 5774
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5774&view=rev
Author: fabiomaulo
Date: 2011-04-27 14:36:13 +0000 (Wed, 27 Apr 2011)
Log Message:
-----------
IModelInspector and IModelExplicitDeclarationsHolder managing composed-id
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelInspector.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs
trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs 2011-04-27 13:53:14 UTC (rev 5773)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs 2011-04-27 14:36:13 UTC (rev 5774)
@@ -17,6 +17,7 @@
private readonly HashSet<MemberInfo> manyToManyRelations = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> manyToOneRelations = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> naturalIds = new HashSet<MemberInfo>();
+ private readonly HashSet<MemberInfo> composedIds = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> oneToManyRelations = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> oneToOneRelations = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> poids = new HashSet<MemberInfo>();
@@ -92,6 +93,11 @@
get { return poids; }
}
+ public IEnumerable<MemberInfo> ComposedIds
+ {
+ get { return composedIds; }
+ }
+
public IEnumerable<MemberInfo> VersionProperties
{
get { return versionProperties; }
@@ -330,6 +336,12 @@
poids.Add(member);
}
+ public void AddAsPartOfComposedId(MemberInfo member)
+ {
+ persistentMembers.Add(member);
+ composedIds.Add(member);
+ }
+
public void AddAsVersionProperty(MemberInfo member)
{
persistentMembers.Add(member);
@@ -502,6 +514,11 @@
return poids.Contains(member);
}
+ public bool IsMemberOfComposedId(MemberInfo member)
+ {
+ return composedIds.Contains(member);
+ }
+
public virtual bool IsVersion(MemberInfo member)
{
return versionProperties.Contains(member);
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs 2011-04-27 13:53:14 UTC (rev 5773)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs 2011-04-27 14:36:13 UTC (rev 5774)
@@ -1,4 +1,3 @@
-using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
@@ -20,6 +19,7 @@
private readonly IEnumerable<MemberInfo> oneToManyRelations = Enumerable.Empty<MemberInfo>();
private readonly IEnumerable<MemberInfo> oneToOneRelations = Enumerable.Empty<MemberInfo>();
private readonly IEnumerable<MemberInfo> poids = Enumerable.Empty<MemberInfo>();
+ private readonly IEnumerable<MemberInfo> composedIds = Enumerable.Empty<MemberInfo>();
private readonly IEnumerable<MemberInfo> properties = Enumerable.Empty<MemberInfo>();
private readonly IEnumerable<MemberInfo> dynamicComponents = Enumerable.Empty<MemberInfo>();
private readonly IEnumerable<MemberInfo> persistentMembers = new HashSet<MemberInfo>();
@@ -94,6 +94,11 @@
get { return poids; }
}
+ public IEnumerable<MemberInfo> ComposedIds
+ {
+ get { return composedIds; }
+ }
+
public IEnumerable<MemberInfo> VersionProperties
{
get { return versionProperties; }
@@ -192,6 +197,7 @@
public void AddAsAny(MemberInfo member) {}
public void AddAsPoid(MemberInfo member) {}
+ public void AddAsPartOfComposedId(MemberInfo member) {}
public void AddAsVersionProperty(MemberInfo member) {}
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs 2011-04-27 13:53:14 UTC (rev 5773)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs 2011-04-27 14:36:13 UTC (rev 5774)
@@ -32,6 +32,7 @@
IEnumerable<MemberInfo> Any { get; }
IEnumerable<MemberInfo> Poids { get; }
+ IEnumerable<MemberInfo> ComposedIds { get; }
IEnumerable<MemberInfo> VersionProperties { get; }
IEnumerable<MemberInfo> NaturalIds { get; }
@@ -63,6 +64,7 @@
void AddAsAny(MemberInfo member);
void AddAsPoid(MemberInfo member);
+ void AddAsPartOfComposedId(MemberInfo member);
void AddAsVersionProperty(MemberInfo member);
void AddAsNaturalId(MemberInfo member);
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelInspector.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelInspector.cs 2011-04-27 13:53:14 UTC (rev 5773)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelInspector.cs 2011-04-27 14:36:13 UTC (rev 5774)
@@ -21,6 +21,7 @@
bool IsAny(MemberInfo member);
bool IsPersistentId(MemberInfo member);
+ bool IsMemberOfComposedId(MemberInfo member);
bool IsVersion(MemberInfo member);
bool IsMemberOfNaturalId(MemberInfo member);
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs 2011-04-27 13:53:14 UTC (rev 5773)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs 2011-04-27 14:36:13 UTC (rev 5774)
@@ -19,6 +19,7 @@
private readonly HashSet<MemberInfo> oneToManyRelations = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> oneToOneRelations = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> poids = new HashSet<MemberInfo>();
+ private readonly HashSet<MemberInfo> composedIds = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> properties = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> dynamicComponents = new HashSet<MemberInfo>();
private readonly Dictionary<MemberInfo, System.Type> dynamicComponentTemplates = new Dictionary<MemberInfo, System.Type>();
@@ -88,6 +89,11 @@
get { return poids; }
}
+ public IEnumerable<MemberInfo> ComposedIds
+ {
+ get { return composedIds; }
+ }
+
public IEnumerable<MemberInfo> VersionProperties
{
get { return versionProperties; }
@@ -220,6 +226,11 @@
poids.Add(member);
}
+ public void AddAsPartOfComposedId(MemberInfo member)
+ {
+ composedIds.Add(member);
+ }
+
public void AddAsVersionProperty(MemberInfo member)
{
versionProperties.Add(member);
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs 2011-04-27 13:53:14 UTC (rev 5773)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs 2011-04-27 14:36:13 UTC (rev 5774)
@@ -24,6 +24,7 @@
System.Array.ForEach(source.Any.ToArray(), destination.AddAsAny);
System.Array.ForEach(source.Poids.ToArray(), destination.AddAsPoid);
+ System.Array.ForEach(source.ComposedIds.ToArray(), destination.AddAsPartOfComposedId);
System.Array.ForEach(source.VersionProperties.ToArray(), destination.AddAsVersionProperty);
System.Array.ForEach(source.NaturalIds.ToArray(), destination.AddAsNaturalId);
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs 2011-04-27 13:53:14 UTC (rev 5773)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs 2011-04-27 14:36:13 UTC (rev 5774)
@@ -472,6 +472,16 @@
declaredModel.AddAsDynamicComponent(member, componentTemplate);
}
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.ComposedIds
+ {
+ get { return declaredModel.ComposedIds; }
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsPartOfComposedId(MemberInfo member)
+ {
+ declaredModel.AddAsPartOfComposedId(member);
+ }
+
#endregion
#region Implementation of IModelInspector
@@ -554,6 +564,11 @@
return isPersistentId(member, declaredResult);
}
+ bool IModelInspector.IsMemberOfComposedId(MemberInfo member)
+ {
+ return declaredModel.IsPersistentId(member);
+ }
+
bool IModelInspector.IsVersion(MemberInfo member)
{
bool declaredResult = declaredModel.IsVersion(member);
Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs 2011-04-27 13:53:14 UTC (rev 5773)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs 2011-04-27 14:36:13 UTC (rev 5774)
@@ -271,6 +271,17 @@
destination.GetDynamicComponentTemplate(property).Should().Be(typeof(MyClass));
}
+ [Test]
+ public void MergeComposedId()
+ {
+ var destination = new ExplicitDeclarationsHolder();
+ var source = new ExplicitDeclarationsHolder();
+ source.AddAsPartOfComposedId(property);
+
+ destination.Merge(source);
+ destination.ComposedIds.Should().Have.Count.EqualTo(1);
+ }
+
#region Nested type: MyClass
private class MyClass
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|