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