|
From: <fab...@us...> - 2011-05-23 22:26:03
|
Revision: 5866
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5866&view=rev
Author: fabiomaulo
Date: 2011-05-23 22:25:56 +0000 (Mon, 23 May 2011)
Log Message:
-----------
First approximation to fix NH-2728 (many-to-any by code)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Mapping/ByCode/AbstractExplicitlyDeclaredModel.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionElementRelation.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CollectionElementRelation.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersHolder.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/CollectionElementRelationCustomizer.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ICustomizersHolder.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs
trunk/nhibernate/src/NHibernate/NHibernate.csproj
trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs
Added Paths:
-----------
trunk/nhibernate/src/NHibernate/Mapping/ByCode/IManyToAnyMapper.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ManyToAnyCustomizer.cs
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/AbstractExplicitlyDeclaredModel.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/AbstractExplicitlyDeclaredModel.cs 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/AbstractExplicitlyDeclaredModel.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -16,6 +16,7 @@
private readonly HashSet<MemberInfo> idBags = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> lists = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> manyToManyRelations = new HashSet<MemberInfo>();
+ private readonly HashSet<MemberInfo> manyToAnyRelations = 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>();
@@ -90,6 +91,11 @@
get { return oneToManyRelations; }
}
+ public IEnumerable<MemberInfo> ManyToAnyRelations
+ {
+ get { return manyToAnyRelations; }
+ }
+
public IEnumerable<MemberInfo> Any
{
get { return any; }
@@ -338,6 +344,12 @@
oneToManyRelations.Add(member);
}
+ public void AddAsManyToAnyRelation(MemberInfo member)
+ {
+ persistentMembers.Add(member);
+ manyToAnyRelations.Add(member);
+ }
+
public void AddAsAny(MemberInfo member)
{
persistentMembers.Add(member);
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -1,3 +1,4 @@
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
@@ -15,6 +16,7 @@
private readonly IEnumerable<MemberInfo> lists = Enumerable.Empty<MemberInfo>();
private readonly IEnumerable<MemberInfo> manyToManyRelations = Enumerable.Empty<MemberInfo>();
private readonly IEnumerable<MemberInfo> manyToOneRelations = Enumerable.Empty<MemberInfo>();
+ private readonly IEnumerable<MemberInfo> manyToAnyRelations = Enumerable.Empty<MemberInfo>();
private readonly IEnumerable<MemberInfo> naturalIds = Enumerable.Empty<MemberInfo>();
private readonly IEnumerable<MemberInfo> oneToManyRelations = Enumerable.Empty<MemberInfo>();
private readonly IEnumerable<MemberInfo> oneToOneRelations = Enumerable.Empty<MemberInfo>();
@@ -84,6 +86,11 @@
get { return oneToManyRelations; }
}
+ public IEnumerable<MemberInfo> ManyToAnyRelations
+ {
+ get { return manyToAnyRelations; }
+ }
+
public IEnumerable<MemberInfo> Any
{
get { return any; }
@@ -191,6 +198,7 @@
public void AddAsManyToManyRelation(MemberInfo member) {}
public void AddAsOneToManyRelation(MemberInfo member) {}
+ public void AddAsManyToAnyRelation(MemberInfo member) {}
public void AddAsAny(MemberInfo member) {}
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionElementRelation.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionElementRelation.cs 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionElementRelation.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -8,6 +8,7 @@
void OneToMany(Action<IOneToManyMapper> mapping);
void ManyToMany(Action<IManyToManyMapper> mapping);
void Component(Action<IComponentElementMapper> mapping);
+ void ManyToAny(System.Type idTypeOfMetaType, Action<IManyToAnyMapper> mapping);
}
public interface ICollectionElementRelation<TElement>
@@ -19,5 +20,7 @@
void ManyToMany();
void ManyToMany(Action<IManyToManyMapper> mapping);
void Component(Action<IComponentElementMapper<TElement>> mapping);
+ void ManyToAny(System.Type idTypeOfMetaType, Action<IManyToAnyMapper> mapping);
+ void ManyToAny<TIdTypeOfMetaType>(Action<IManyToAnyMapper> mapping);
}
}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IManyToAnyMapper.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IManyToAnyMapper.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IManyToAnyMapper.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -0,0 +1,25 @@
+using System;
+using NHibernate.Type;
+
+namespace NHibernate.Mapping.ByCode
+{
+ public interface IManyToAnyMapper
+ {
+ void MetaType(IType metaType);
+ void MetaType<TMetaType>();
+ void MetaType(System.Type metaType);
+
+ void IdType(IType idType);
+ void IdType<TIdType>();
+ void IdType(System.Type idType);
+
+ void Columns(Action<IColumnMapper> idColumnMapping, Action<IColumnMapper> classColumnMapping);
+
+ /// <summary>
+ /// Add or modify a value-class pair.
+ /// </summary>
+ /// <param name="value">The value of the DB-field dor a given association instance (should override <see cref="object.ToString"/>)</param>
+ /// <param name="entityType">The class associated to the specific <paramref name="value"/>. </param>
+ void MetaValue(object value, System.Type entityType);
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -29,6 +29,8 @@
IEnumerable<MemberInfo> ManyToOneRelations { get; }
IEnumerable<MemberInfo> ManyToManyRelations { get; }
IEnumerable<MemberInfo> OneToManyRelations { get; }
+ IEnumerable<MemberInfo> ManyToAnyRelations { get; }
+
IEnumerable<MemberInfo> Any { get; }
IEnumerable<MemberInfo> Poids { get; }
@@ -61,6 +63,8 @@
void AddAsManyToOneRelation(MemberInfo member);
void AddAsManyToManyRelation(MemberInfo member);
void AddAsOneToManyRelation(MemberInfo member);
+ void AddAsManyToAnyRelation(MemberInfo member);
+
void AddAsAny(MemberInfo member);
void AddAsPoid(MemberInfo member);
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CollectionElementRelation.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CollectionElementRelation.cs 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CollectionElementRelation.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -46,6 +46,11 @@
elementRelationshipAssing(hbm);
}
+ public void ManyToAny(System.Type idTypeOfMetaType, Action<IManyToAnyMapper> mapping)
+ {
+ throw new NotImplementedException();
+ }
+
#endregion
}
}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersHolder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersHolder.cs 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersHolder.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -24,6 +24,9 @@
private readonly Dictionary<PropertyPath, List<Action<IManyToManyMapper>>> collectionRelationManyToManyCustomizers =
new Dictionary<PropertyPath, List<Action<IManyToManyMapper>>>();
+ private readonly Dictionary<PropertyPath, List<Action<IManyToAnyMapper>>> collectionRelationManyToAnyCustomizers =
+ new Dictionary<PropertyPath, List<Action<IManyToAnyMapper>>>();
+
private readonly Dictionary<PropertyPath, List<Action<IOneToManyMapper>>> collectionRelationOneToManyCustomizers =
new Dictionary<PropertyPath, List<Action<IOneToManyMapper>>>();
@@ -190,6 +193,11 @@
AddCustomizer(collectionRelationOneToManyCustomizers, member, collectionRelationOneToManyCustomizer);
}
+ public void AddCustomizer(PropertyPath member, Action<IManyToAnyMapper> collectionRelationManyToAnyCustomizer)
+ {
+ AddCustomizer(collectionRelationManyToAnyCustomizers, member, collectionRelationManyToAnyCustomizer);
+ }
+
public void AddCustomizer(PropertyPath member, Action<IMapKeyManyToManyMapper> mapKeyManyToManyCustomizer)
{
AddCustomizer(mapKeyManyToManyCustomizers, member, mapKeyManyToManyCustomizer);
@@ -200,6 +208,11 @@
AddCustomizer(mapKeyElementCustomizers, member, mapKeyElementCustomizer);
}
+ public void InvokeCustomizers(PropertyPath member, IManyToAnyMapper mapper)
+ {
+ InvokeCustomizers(collectionRelationManyToAnyCustomizers, member, mapper);
+ }
+
public IEnumerable<System.Type> GetAllCustomizedEntities()
{
return rootClassCustomizers.Keys.Concat(subclassCustomizers.Keys).Concat(joinedClassCustomizers.Keys).Concat(unionClassCustomizers.Keys);
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/CollectionElementRelationCustomizer.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/CollectionElementRelationCustomizer.cs 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/CollectionElementRelationCustomizer.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -61,6 +61,21 @@
mapping(componetElementCustomizer);
}
+ public void ManyToAny(System.Type idTypeOfMetaType, Action<IManyToAnyMapper> mapping)
+ {
+ if (mapping == null)
+ {
+ throw new ArgumentNullException("mapping");
+ }
+ var manyToAnyCustomizer = new ManyToAnyCustomizer(explicitDeclarationsHolder, propertyPath, customizersHolder);
+ mapping(manyToAnyCustomizer);
+ }
+
+ public void ManyToAny<TIdTypeOfMetaType>(Action<IManyToAnyMapper> mapping)
+ {
+ ManyToAny(typeof(TIdTypeOfMetaType), mapping);
+ }
+
#endregion
}
}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ManyToAnyCustomizer.cs
===================================================================
(Binary files differ)
Property changes on: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ManyToAnyCustomizer.cs
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -185,7 +185,7 @@
{
foreach (var member in members)
{
- CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, member), am => am.IdType(idTypeOfMetaType));
+ CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, member), (IAnyMapper am) => am.IdType(idTypeOfMetaType));
CustomizersHolder.AddCustomizer(new PropertyPath(PropertyPath, member), mapping);
explicitDeclarationsHolder.AddAsAny(member);
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -1,3 +1,4 @@
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
@@ -15,6 +16,7 @@
private readonly HashSet<MemberInfo> lists = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> manyToManyRelations = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> manyToOneRelations = new HashSet<MemberInfo>();
+ private readonly HashSet<MemberInfo> manyToAnyRelations = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> naturalIds = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> oneToManyRelations = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> oneToOneRelations = new HashSet<MemberInfo>();
@@ -79,6 +81,11 @@
get { return oneToManyRelations; }
}
+ public IEnumerable<MemberInfo> ManyToAnyRelations
+ {
+ get { return manyToAnyRelations; }
+ }
+
public IEnumerable<MemberInfo> Any
{
get { return any; }
@@ -216,6 +223,11 @@
oneToManyRelations.Add(member);
}
+ public void AddAsManyToAnyRelation(MemberInfo member)
+ {
+ manyToAnyRelations.Add(member);
+ }
+
public void AddAsAny(MemberInfo member)
{
any.Add(member);
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ICustomizersHolder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ICustomizersHolder.cs 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ICustomizersHolder.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -48,16 +48,10 @@
void InvokeCustomizers(PropertyPath member, IComponentAsIdAttributesMapper mapper);
void InvokeCustomizers(PropertyPath member, IDynamicComponentAttributesMapper mapper);
- #region Collection Element relations invokers
-
- void InvokeCustomizers(PropertyPath member, IManyToManyMapper mapper);
- void InvokeCustomizers(PropertyPath member, IElementMapper mapper);
- void InvokeCustomizers(PropertyPath member, IOneToManyMapper mapper);
-
- #endregion
-
#region Dictionary key relations
+ void AddCustomizer(PropertyPath member, Action<IMapKeyManyToManyMapper> mapKeyManyToManyCustomizer);
+ void AddCustomizer(PropertyPath member, Action<IMapKeyMapper> mapKeyElementCustomizer);
void InvokeCustomizers(PropertyPath member, IMapKeyManyToManyMapper mapper);
void InvokeCustomizers(PropertyPath member, IMapKeyMapper mapper);
@@ -68,16 +62,14 @@
void AddCustomizer(PropertyPath member, Action<IManyToManyMapper> collectionRelationManyToManyCustomizer);
void AddCustomizer(PropertyPath member, Action<IElementMapper> collectionRelationElementCustomizer);
void AddCustomizer(PropertyPath member, Action<IOneToManyMapper> collectionRelationOneToManyCustomizer);
+ void AddCustomizer(PropertyPath member, Action<IManyToAnyMapper> collectionRelationManyToAnyCustomizer);
+ void InvokeCustomizers(PropertyPath member, IManyToManyMapper mapper);
+ void InvokeCustomizers(PropertyPath member, IElementMapper mapper);
+ void InvokeCustomizers(PropertyPath member, IOneToManyMapper mapper);
+ void InvokeCustomizers(PropertyPath member, IManyToAnyMapper mapper);
#endregion
- #region Dictionary key relations
-
- void AddCustomizer(PropertyPath member, Action<IMapKeyManyToManyMapper> mapKeyManyToManyCustomizer);
- void AddCustomizer(PropertyPath member, Action<IMapKeyMapper> mapKeyElementCustomizer);
-
- #endregion
-
IEnumerable<System.Type> GetAllCustomizedEntities();
}
}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -20,6 +20,7 @@
System.Array.ForEach(source.OneToOneRelations.ToArray(), destination.AddAsOneToOneRelation);
System.Array.ForEach(source.ManyToOneRelations.ToArray(), destination.AddAsManyToOneRelation);
System.Array.ForEach(source.ManyToManyRelations.ToArray(), destination.AddAsManyToManyRelation);
+ System.Array.ForEach(source.ManyToAnyRelations.ToArray(), destination.AddAsManyToAnyRelation);
System.Array.ForEach(source.OneToManyRelations.ToArray(), destination.AddAsOneToManyRelation);
System.Array.ForEach(source.Any.ToArray(), destination.AddAsAny);
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -428,6 +428,11 @@
get { return declaredModel.OneToManyRelations; }
}
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.ManyToAnyRelations
+ {
+ get { return declaredModel.ManyToAnyRelations; }
+ }
+
IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.Any
{
get { return declaredModel.Any; }
@@ -553,6 +558,11 @@
declaredModel.AddAsOneToManyRelation(member);
}
+ void IModelExplicitDeclarationsHolder.AddAsManyToAnyRelation(MemberInfo member)
+ {
+ declaredModel.AddAsManyToAnyRelation(member);
+ }
+
void IModelExplicitDeclarationsHolder.AddAsAny(MemberInfo member)
{
declaredModel.AddAsAny(member);
Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-05-23 22:25:56 UTC (rev 5866)
@@ -302,12 +302,14 @@
<Compile Include="Mapping\ByCode\Conformist\UnionSubclassMapping.cs" />
<Compile Include="Mapping\ByCode\ICompositeIdMapper.cs" />
<Compile Include="Mapping\ByCode\IDynamicComponentAttributesMapper.cs" />
+ <Compile Include="Mapping\ByCode\IManyToAnyMapper.cs" />
<Compile Include="Mapping\ByCode\Impl\ComponentAsIdLikeComponetAttributesMapper.cs" />
<Compile Include="Mapping\ByCode\Impl\ComponentAsIdMapper.cs" />
<Compile Include="Mapping\ByCode\Impl\ComposedIdMapper.cs" />
<Compile Include="Mapping\ByCode\Impl\CustomizersImpl\ComponentAsIdCustomizer.cs" />
<Compile Include="Mapping\ByCode\Impl\CustomizersImpl\ComposedIdCustomizer.cs" />
<Compile Include="Mapping\ByCode\Impl\CustomizersImpl\DynamicComponentCustomizer.cs" />
+ <Compile Include="Mapping\ByCode\Impl\CustomizersImpl\ManyToAnyCustomizer.cs" />
<Compile Include="Mapping\ByCode\Impl\DynamicComponentMapper.cs" />
<Compile Include="Mapping\ByCode\PropertyGeneration.cs" />
<Compile Include="Mapping\ByCode\PropertyToField.cs" />
Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs 2011-05-23 20:10:41 UTC (rev 5865)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs 2011-05-23 22:25:56 UTC (rev 5866)
@@ -24,6 +24,7 @@
private readonly HashSet<MemberInfo> idBags = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> lists = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> manyToManyRelations = new HashSet<MemberInfo>();
+ private readonly HashSet<MemberInfo> manyToAnyRelations = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> manyToOneRelations = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> naturalIds = new HashSet<MemberInfo>();
private readonly HashSet<MemberInfo> oneToManyRelations = new HashSet<MemberInfo>();
@@ -126,6 +127,15 @@
}
}
+ public IEnumerable<MemberInfo> ManyToAnyRelations
+ {
+ get
+ {
+ PropertiesGettersUsed.Add("ManyToAnyRelations");
+ return manyToAnyRelations;
+ }
+ }
+
public IEnumerable<MemberInfo> Any
{
get
@@ -285,6 +295,8 @@
public void AddAsManyToOneRelation(MemberInfo member) { }
public void AddAsManyToManyRelation(MemberInfo member) { }
public void AddAsOneToManyRelation(MemberInfo member) { }
+ public void AddAsManyToAnyRelation(MemberInfo member) {}
+
public void AddAsAny(MemberInfo member) { }
public void AddAsPoid(MemberInfo member) { }
public void AddAsPartOfComposedId(MemberInfo member) { }
@@ -467,6 +479,17 @@
}
[Test]
+ public void MergeManyToAnyRelations()
+ {
+ var destination = new ExplicitDeclarationsHolder();
+ var source = new ExplicitDeclarationsHolder();
+ source.AddAsManyToAnyRelation(property);
+
+ destination.Merge(source);
+ destination.ManyToAnyRelations.Should().Have.Count.EqualTo(1);
+ }
+
+ [Test]
public void MergeManyToManyRelations()
{
var destination = new ExplicitDeclarationsHolder();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|