|
From: <fab...@us...> - 2011-04-10 17:55:11
|
Revision: 5651
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5651&view=rev
Author: fabiomaulo
Date: 2011-04-10 17:55:04 +0000 (Sun, 10 Apr 2011)
Log Message:
-----------
SimpleModelInspector (only as forward to explicit declaration) with minor refactoring
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/Impl/CustomizersImpl/JoinCustomizer.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs
trunk/nhibernate/src/NHibernate/NHibernate.csproj
trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExplicitlyDeclaredModelTests/SplitPropertiesRegistrationTests.cs
trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs
Added Paths:
-----------
trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs 2011-04-10 16:38:24 UTC (rev 5650)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs 2011-04-10 17:55:04 UTC (rev 5651)
@@ -382,11 +382,17 @@
persistentMembers.Add(member);
}
- public void AddAsPropertySplit(System.Type propertyContainer, string splitGroupId, MemberInfo member)
+ public void AddAsPropertySplit(SplitDefinition definition)
{
+ if (definition == null)
+ {
+ return;
+ }
/* Note: if the user "jump/exclude" a class and then map the property in two subclasses the usage of GetMemberFromDeclaringType() may cause a problem
for a legal usage... we will see when the case happen */
-
+ System.Type propertyContainer = definition.On;
+ string splitGroupId = definition.GroupId;
+ MemberInfo member = definition.Member;
var memberKey = member.GetMemberFromDeclaringType();
string splitGroup;
if (!memberSplitGroup.TryGetValue(memberKey, out splitGroup))
@@ -395,7 +401,7 @@
memberSplitGroup[memberKey] = splitGroupId;
}
- splitDefinitions.Add(new SplitDefinition(propertyContainer, splitGroup, member));
+ splitDefinitions.Add(definition);
}
private void AddTypeSplits(System.Type propertyContainer, string splitGroupId)
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs 2011-04-10 16:38:24 UTC (rev 5650)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs 2011-04-10 17:55:04 UTC (rev 5651)
@@ -200,9 +200,8 @@
public void AddAsProperty(MemberInfo member) {}
public void AddAsPersistentMember(MemberInfo member){}
+ public void AddAsPropertySplit(SplitDefinition definition) {}
- public void AddAsPropertySplit(System.Type propertyContainer, string splitGroupId, MemberInfo member) {}
-
#endregion
}
}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs 2011-04-10 16:38:24 UTC (rev 5650)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs 2011-04-10 17:55:04 UTC (rev 5651)
@@ -72,6 +72,6 @@
void AddAsMap(MemberInfo member);
void AddAsProperty(MemberInfo member);
void AddAsPersistentMember(MemberInfo member);
- void AddAsPropertySplit(System.Type propertyContainer, string splitGroupId, MemberInfo member);
+ void AddAsPropertySplit(SplitDefinition definition);
}
}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinCustomizer.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinCustomizer.cs 2011-04-10 16:38:24 UTC (rev 5650)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinCustomizer.cs 2011-04-10 17:55:04 UTC (rev 5651)
@@ -85,90 +85,90 @@
public override void Set<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<ISetPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping)
{
MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property);
- ExplicitDeclarationsHolder.AddAsPropertySplit(typeof (TEntity), splitGroupId, member);
+ ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof (TEntity), splitGroupId, member));
base.Set(property, collectionMapping, mapping);
}
public override void Bag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IBagPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping)
{
MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property);
- ExplicitDeclarationsHolder.AddAsPropertySplit(typeof (TEntity), splitGroupId, member);
+ ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
base.Bag(property, collectionMapping, mapping);
}
public override void List<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IListPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping)
{
MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property);
- ExplicitDeclarationsHolder.AddAsPropertySplit(typeof (TEntity), splitGroupId, member);
+ ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
base.List(property, collectionMapping, mapping);
}
public override void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping, Action<IMapKeyRelation<TKey>> keyMapping, Action<ICollectionElementRelation<TElement>> mapping)
{
MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property);
- ExplicitDeclarationsHolder.AddAsPropertySplit(typeof (TEntity), splitGroupId, member);
+ ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
base.Map(property, collectionMapping, keyMapping, mapping);
}
public override void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping)
{
MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property);
- ExplicitDeclarationsHolder.AddAsPropertySplit(typeof (TEntity), splitGroupId, member);
+ ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
base.Map(property, collectionMapping, mapping);
}
public override void Property<TProperty>(Expression<Func<TEntity, TProperty>> property)
{
MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property);
- ExplicitDeclarationsHolder.AddAsPropertySplit(typeof (TEntity), splitGroupId, member);
+ ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
base.Property(property);
}
public override void Property<TProperty>(Expression<Func<TEntity, TProperty>> property, Action<IPropertyMapper> mapping)
{
MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property);
- ExplicitDeclarationsHolder.AddAsPropertySplit(typeof (TEntity), splitGroupId, member);
+ ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
base.Property(property, mapping);
}
public override void Property(FieldInfo member, Action<IPropertyMapper> mapping)
{
- ExplicitDeclarationsHolder.AddAsPropertySplit(typeof (TEntity), splitGroupId, member);
+ ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
base.Property(member, mapping);
}
public override void Component<TComponent>(Expression<Func<TEntity, TComponent>> property, Action<IComponentMapper<TComponent>> mapping)
{
MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property);
- ExplicitDeclarationsHolder.AddAsPropertySplit(typeof (TEntity), splitGroupId, member);
+ ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
base.Component(property, mapping);
}
public override void ManyToOne<TProperty>(Expression<Func<TEntity, TProperty>> property, Action<IManyToOneMapper> mapping)
{
MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property);
- ExplicitDeclarationsHolder.AddAsPropertySplit(typeof (TEntity), splitGroupId, member);
+ ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
base.ManyToOne(property, mapping);
}
public override void ManyToOne<TProperty>(Expression<Func<TEntity, TProperty>> property)
{
MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property);
- ExplicitDeclarationsHolder.AddAsPropertySplit(typeof (TEntity), splitGroupId, member);
+ ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
base.ManyToOne(property);
}
public override void Any<TProperty>(Expression<Func<TEntity, TProperty>> property, System.Type idTypeOfMetaType, Action<IAnyMapper> mapping)
{
MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property);
- ExplicitDeclarationsHolder.AddAsPropertySplit(typeof (TEntity), splitGroupId, member);
+ ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
base.Any(property, idTypeOfMetaType, mapping);
}
public override void IdBag<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<IIdBagPropertiesMapper<TEntity, TElement>> collectionMapping, Action<ICollectionElementRelation<TElement>> mapping)
{
MemberInfo member = TypeExtensions.DecodeMemberAccessExpression(property);
- ExplicitDeclarationsHolder.AddAsPropertySplit(typeof(TEntity), splitGroupId, member);
+ ExplicitDeclarationsHolder.AddAsPropertySplit(new SplitDefinition(typeof(TEntity), splitGroupId, member));
base.IdBag(property, collectionMapping, mapping);
}
}
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs 2011-04-10 16:38:24 UTC (rev 5650)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ExplicitDeclarationsHolder.cs 2011-04-10 17:55:04 UTC (rev 5651)
@@ -257,9 +257,9 @@
persistentMembers.Add(member);
}
- public void AddAsPropertySplit(System.Type propertyContainer, string splitGroupId, MemberInfo member)
+ public void AddAsPropertySplit(SplitDefinition definition)
{
- splitDefinitions.Add(new SplitDefinition(propertyContainer, splitGroupId, member));
+ splitDefinitions.Add(definition);
}
#endregion
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs 2011-04-10 16:38:24 UTC (rev 5650)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelExplicitDeclarationsHolderExtensions.cs 2011-04-10 17:55:04 UTC (rev 5651)
@@ -35,7 +35,7 @@
System.Array.ForEach(source.Dictionaries.ToArray(), destination.AddAsMap);
System.Array.ForEach(source.Properties.ToArray(), destination.AddAsProperty);
System.Array.ForEach(source.PersistentMembers.ToArray(), destination.AddAsPersistentMember);
- System.Array.ForEach(source.SplitDefinitions.ToArray(), x => destination.AddAsPropertySplit(x.On, x.GroupId, x.Member));
+ System.Array.ForEach(source.SplitDefinitions.ToArray(), destination.AddAsPropertySplit);
}
}
}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs 2011-04-10 17:55:04 UTC (rev 5651)
@@ -0,0 +1,640 @@
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+
+namespace NHibernate.Mapping.ByCode
+{
+ /// <summary>
+ /// A <see cref="IModelInspector"/> which allows customization of conditions with explicitly declared members.
+ /// </summary>
+ public class SimpleModelInspector : IModelInspector, IModelExplicitDeclarationsHolder
+ {
+ private readonly ExplicitlyDeclaredModel declaredModel = new ExplicitlyDeclaredModel();
+
+ private Func<System.Type, bool, bool> isEntity = (t, declared) => declared;
+ private Func<System.Type, bool, bool> isRootEntity = (t, declared) => declared;
+ private Func<System.Type, bool, bool> isTablePerClass = (t, declared) => declared;
+ private Func<SplitDefinition, bool, bool> isTablePerClassSplit = (sd, declared) => declared;
+ private Func<System.Type, bool, bool> isTablePerClassHierarchy = (t, declared) => declared;
+ private Func<System.Type, bool, bool> isTablePerConcreteClass = (t, declared) => declared;
+ 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> isPersistentProperty = (m, declared) => declared;
+ private Func<MemberInfo, bool, bool> isVersion = (m, declared) => declared;
+
+ private Func<MemberInfo, bool, bool> isProperty = (m, declared) => declared;
+ private Func<MemberInfo, bool, bool> isAny = (m, declared) => declared;
+ private Func<MemberInfo, bool, bool> isManyToMany = (m, declared) => declared;
+ private Func<MemberInfo, bool, bool> isManyToOne = (m, declared) => declared;
+ private Func<MemberInfo, bool, bool> isMemberOfNaturalId = (m, declared) => declared;
+ private Func<MemberInfo, bool, bool> isOneToMany = (m, declared) => declared;
+ private Func<MemberInfo, bool, bool> isOneToOne = (m, declared) => declared;
+
+ private Func<MemberInfo, bool, bool> isSet = (m, declared) => declared;
+ private Func<MemberInfo, bool, bool> isArray = (m, declared) => declared;
+ private Func<MemberInfo, bool, bool> isBag = (m, declared) => declared;
+ private Func<MemberInfo, bool, bool> isDictionary = (m, declared) => declared;
+ private Func<MemberInfo, bool, bool> isIdBag = (m, declared) => declared;
+ private Func<MemberInfo, bool, bool> isList = (m, declared) => declared;
+
+ #region IModelExplicitDeclarationsHolder Members
+
+ IEnumerable<System.Type> IModelExplicitDeclarationsHolder.RootEntities
+ {
+ get { return declaredModel.RootEntities; }
+ }
+
+ IEnumerable<System.Type> IModelExplicitDeclarationsHolder.Components
+ {
+ get { return declaredModel.Components; }
+ }
+
+ IEnumerable<System.Type> IModelExplicitDeclarationsHolder.TablePerClassEntities
+ {
+ get { return declaredModel.TablePerClassEntities; }
+ }
+
+ IEnumerable<System.Type> IModelExplicitDeclarationsHolder.TablePerClassHierarchyEntities
+ {
+ get { return declaredModel.TablePerClassHierarchyEntities; }
+ }
+
+ IEnumerable<System.Type> IModelExplicitDeclarationsHolder.TablePerConcreteClassEntities
+ {
+ get { return declaredModel.TablePerConcreteClassEntities; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.OneToOneRelations
+ {
+ get { return declaredModel.OneToOneRelations; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.ManyToOneRelations
+ {
+ get { return declaredModel.ManyToManyRelations; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.ManyToManyRelations
+ {
+ get { return declaredModel.ManyToManyRelations; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.OneToManyRelations
+ {
+ get { return declaredModel.OneToManyRelations; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.Any
+ {
+ get { return declaredModel.Any; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.Poids
+ {
+ get { return declaredModel.Poids; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.VersionProperties
+ {
+ get { return declaredModel.VersionProperties; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.NaturalIds
+ {
+ get { return declaredModel.NaturalIds; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.Sets
+ {
+ get { return declaredModel.Sets; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.Bags
+ {
+ get { return declaredModel.Bags; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.IdBags
+ {
+ get { return declaredModel.IdBags; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.Lists
+ {
+ get { return declaredModel.Lists; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.Arrays
+ {
+ get { return declaredModel.Arrays; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.Dictionaries
+ {
+ get { return declaredModel.Dictionaries; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.Properties
+ {
+ get { return declaredModel.Properties; }
+ }
+
+ IEnumerable<MemberInfo> IModelExplicitDeclarationsHolder.PersistentMembers
+ {
+ get { return declaredModel.PersistentMembers; }
+ }
+
+ IEnumerable<SplitDefinition> IModelExplicitDeclarationsHolder.SplitDefinitions
+ {
+ get { return declaredModel.SplitDefinitions; }
+ }
+
+ IEnumerable<string> IModelExplicitDeclarationsHolder.GetSplitGroupsFor(System.Type type)
+ {
+ return declaredModel.GetSplitGroupsFor(type);
+ }
+
+ string IModelExplicitDeclarationsHolder.GetSplitGroupFor(MemberInfo member)
+ {
+ return declaredModel.GetSplitGroupFor(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsRootEntity(System.Type type)
+ {
+ declaredModel.AddAsRootEntity(type);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsComponent(System.Type type)
+ {
+ declaredModel.AddAsComponent(type);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsTablePerClassEntity(System.Type type)
+ {
+ declaredModel.AddAsTablePerClassEntity(type);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsTablePerClassHierarchyEntity(System.Type type)
+ {
+ declaredModel.AddAsTablePerClassHierarchyEntity(type);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsTablePerConcreteClassEntity(System.Type type)
+ {
+ declaredModel.AddAsTablePerConcreteClassEntity(type);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsOneToOneRelation(MemberInfo member)
+ {
+ declaredModel.AddAsOneToOneRelation(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsManyToOneRelation(MemberInfo member)
+ {
+ declaredModel.AddAsManyToOneRelation(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsManyToManyRelation(MemberInfo member)
+ {
+ declaredModel.AddAsManyToManyRelation(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsOneToManyRelation(MemberInfo member)
+ {
+ declaredModel.AddAsOneToManyRelation(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsAny(MemberInfo member)
+ {
+ declaredModel.AddAsAny(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsPoid(MemberInfo member)
+ {
+ declaredModel.AddAsPoid(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsVersionProperty(MemberInfo member)
+ {
+ declaredModel.AddAsVersionProperty(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsNaturalId(MemberInfo member)
+ {
+ declaredModel.AddAsNaturalId(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsSet(MemberInfo member)
+ {
+ declaredModel.AddAsSet(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsBag(MemberInfo member)
+ {
+ declaredModel.AddAsBag(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsIdBag(MemberInfo member)
+ {
+ declaredModel.AddAsIdBag(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsList(MemberInfo member)
+ {
+ declaredModel.AddAsList(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsArray(MemberInfo member)
+ {
+ declaredModel.AddAsArray(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsMap(MemberInfo member)
+ {
+ declaredModel.AddAsMap(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsProperty(MemberInfo member)
+ {
+ declaredModel.AddAsProperty(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsPersistentMember(MemberInfo member)
+ {
+ declaredModel.AddAsPersistentMember(member);
+ }
+
+ void IModelExplicitDeclarationsHolder.AddAsPropertySplit(SplitDefinition definition)
+ {
+ declaredModel.AddAsPropertySplit(definition);
+ }
+
+ #endregion
+
+ #region Implementation of IModelInspector
+
+ bool IModelInspector.IsRootEntity(System.Type type)
+ {
+ bool declaredResult = declaredModel.IsRootEntity(type);
+ return isRootEntity(type, declaredResult);
+ }
+
+ bool IModelInspector.IsComponent(System.Type type)
+ {
+ bool declaredResult = declaredModel.IsComponent(type);
+ return isComponent(type, declaredResult);
+ }
+
+ bool IModelInspector.IsEntity(System.Type type)
+ {
+ bool declaredResult = declaredModel.IsEntity(type);
+ return isEntity(type, declaredResult);
+ }
+
+ bool IModelInspector.IsTablePerClass(System.Type type)
+ {
+ bool declaredResult = declaredModel.IsTablePerClass(type);
+ return isTablePerClass(type, declaredResult);
+ }
+
+ bool IModelInspector.IsTablePerClassSplit(System.Type type, object splitGroupId, MemberInfo member)
+ {
+ bool declaredResult = declaredModel.IsTablePerClassSplit(type, splitGroupId, member);
+ return isTablePerClassSplit(new SplitDefinition(type, splitGroupId.ToString(), member), declaredResult);
+ }
+
+ bool IModelInspector.IsTablePerClassHierarchy(System.Type type)
+ {
+ bool declaredResult = declaredModel.IsTablePerClassHierarchy(type);
+ return isTablePerClassHierarchy(type, declaredResult);
+ }
+
+ bool IModelInspector.IsTablePerConcreteClass(System.Type type)
+ {
+ bool declaredResult = declaredModel.IsTablePerConcreteClass(type);
+ return isTablePerConcreteClass(type, declaredResult);
+ }
+
+ bool IModelInspector.IsOneToOne(MemberInfo member)
+ {
+ bool declaredResult = declaredModel.IsOneToOne(member);
+ return isOneToOne(member, declaredResult);
+ }
+
+ bool IModelInspector.IsManyToOne(MemberInfo member)
+ {
+ bool declaredResult = declaredModel.IsManyToOne(member);
+ return isManyToOne(member, declaredResult);
+ }
+
+ bool IModelInspector.IsManyToMany(MemberInfo member)
+ {
+ bool declaredResult = declaredModel.IsManyToMany(member);
+ return isManyToMany(member, declaredResult);
+ }
+
+ bool IModelInspector.IsOneToMany(MemberInfo member)
+ {
+ bool declaredResult = declaredModel.IsOneToMany(member);
+ return isOneToMany(member, declaredResult);
+ }
+
+ bool IModelInspector.IsAny(MemberInfo member)
+ {
+ bool declaredResult = declaredModel.IsAny(member);
+ return isAny(member, declaredResult);
+ }
+
+ bool IModelInspector.IsPersistentId(MemberInfo member)
+ {
+ bool declaredResult = declaredModel.IsPersistentId(member);
+ return isPersistentId(member, declaredResult);
+ }
+
+ bool IModelInspector.IsVersion(MemberInfo member)
+ {
+ bool declaredResult = declaredModel.IsVersion(member);
+ return isVersion(member, declaredResult);
+ }
+
+ bool IModelInspector.IsMemberOfNaturalId(MemberInfo member)
+ {
+ bool declaredResult = declaredModel.IsMemberOfNaturalId(member);
+ return isMemberOfNaturalId(member, declaredResult);
+ }
+
+ bool IModelInspector.IsPersistentProperty(MemberInfo member)
+ {
+ bool declaredResult = declaredModel.IsPersistentProperty(member);
+ return isPersistentProperty(member, declaredResult);
+ }
+
+ bool IModelInspector.IsSet(MemberInfo role)
+ {
+ bool declaredResult = declaredModel.IsSet(role);
+ return isSet(role, declaredResult);
+ }
+
+ bool IModelInspector.IsBag(MemberInfo role)
+ {
+ bool declaredResult = declaredModel.IsBag(role);
+ return isBag(role, declaredResult);
+ }
+
+ bool IModelInspector.IsIdBag(MemberInfo role)
+ {
+ bool declaredResult = declaredModel.IsIdBag(role);
+ return isIdBag(role, declaredResult);
+ }
+
+ bool IModelInspector.IsList(MemberInfo role)
+ {
+ bool declaredResult = declaredModel.IsList(role);
+ return isList(role, declaredResult);
+ }
+
+ bool IModelInspector.IsArray(MemberInfo role)
+ {
+ bool declaredResult = declaredModel.IsArray(role);
+ return isArray(role, declaredResult);
+ }
+
+ bool IModelInspector.IsDictionary(MemberInfo role)
+ {
+ bool declaredResult = declaredModel.IsDictionary(role);
+ return isDictionary(role, declaredResult);
+ }
+
+ bool IModelInspector.IsProperty(MemberInfo member)
+ {
+ bool declaredResult = declaredModel.IsProperty(member);
+ return isProperty(member, declaredResult);
+ }
+
+ IEnumerable<string> IModelInspector.GetPropertiesSplits(System.Type type)
+ {
+ IEnumerable<string> declaredResult = declaredModel.GetPropertiesSplits(type);
+ return splitsForType(type, declaredResult);
+ }
+
+ #endregion
+
+ public void IsRootEntity(Func<System.Type, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isRootEntity = match;
+ }
+
+ public void IsComponent(Func<System.Type, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isComponent = match;
+ }
+
+ public void IsEntity(Func<System.Type, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isEntity = match;
+ }
+
+ public void IsTablePerClass(Func<System.Type, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isTablePerClass = match;
+ }
+
+ public void IsTablePerClassHierarchy(Func<System.Type, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isTablePerClassHierarchy = match;
+ }
+
+ public void IsTablePerConcreteClass(Func<System.Type, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isTablePerConcreteClass = match;
+ }
+
+ public void IsOneToOne(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isOneToOne = match;
+ }
+
+ public void IsManyToOne(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isManyToOne = match;
+ }
+
+ public void IsManyToMany(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isManyToMany = match;
+ }
+
+ public void IsOneToMany(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isOneToMany = match;
+ }
+
+ public void IsAny(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isAny = match;
+ }
+
+ public void IsPersistentId(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isPersistentId = match;
+ }
+
+ public void IsVersion(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isVersion = match;
+ }
+
+ public void IsMemberOfNaturalId(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isMemberOfNaturalId = match;
+ }
+
+ public void IsPersistentProperty(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isPersistentProperty = match;
+ }
+
+ public void IsSet(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isSet = match;
+ }
+
+ public void IsBag(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isBag = match;
+ }
+
+ public void IsIdBag(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isIdBag = match;
+ }
+
+ public void IsList(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isList = match;
+ }
+
+ public void IsArray(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isArray = match;
+ }
+
+ public void IsDictionary(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isDictionary = match;
+ }
+
+ public void IsProperty(Func<MemberInfo, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isProperty = match;
+ }
+
+ public void SplitsFor(Func<System.Type, IEnumerable<string>, IEnumerable<string>> getPropertiesSplitsId)
+ {
+ if (getPropertiesSplitsId == null)
+ {
+ return;
+ }
+ splitsForType = getPropertiesSplitsId;
+ }
+
+ public void IsTablePerClassSplit(Func<SplitDefinition, bool, bool> match)
+ {
+ if (match == null)
+ {
+ return;
+ }
+ isTablePerClassSplit = match;
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-04-10 16:38:24 UTC (rev 5650)
+++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-04-10 17:55:04 UTC (rev 5651)
@@ -290,6 +290,7 @@
<Compile Include="Mapping\ByCode\Conformist\JoinedSubclassMapping.cs" />
<Compile Include="Mapping\ByCode\Conformist\SubclassMapping.cs" />
<Compile Include="Mapping\ByCode\Conformist\UnionSubclassMapping.cs" />
+ <Compile Include="Mapping\ByCode\SimpleModelInspector.cs" />
<Compile Include="Mapping\ByCode\ExplicitlyDeclaredModel.cs" />
<Compile Include="Mapping\ByCode\FakeModelExplicitDeclarationsHolder.cs" />
<Compile Include="Mapping\ByCode\FetchKind.cs" />
Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExplicitlyDeclaredModelTests/SplitPropertiesRegistrationTests.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExplicitlyDeclaredModelTests/SplitPropertiesRegistrationTests.cs 2011-04-10 16:38:24 UTC (rev 5650)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExplicitlyDeclaredModelTests/SplitPropertiesRegistrationTests.cs 2011-04-10 17:55:04 UTC (rev 5651)
@@ -20,8 +20,8 @@
public void WhenRegisterPropertySplitsThenTypeHasSplitGroups()
{
var inspector = new ExplicitlyDeclaredModel();
- inspector.AddAsPropertySplit(typeof(MyClass), "group", For<MyClass>.Property(x => x.Something));
- inspector.AddAsPropertySplit(typeof(Inherited), "group1", For<Inherited>.Property(x => x.SomethingElse));
+ inspector.AddAsPropertySplit(new SplitDefinition(typeof(MyClass), "group", For<MyClass>.Property(x => x.Something)));
+ inspector.AddAsPropertySplit(new SplitDefinition(typeof(Inherited), "group1", For<Inherited>.Property(x => x.SomethingElse)));
inspector.GetSplitGroupsFor(typeof(MyClass)).Should().Have.SameValuesAs("group");
inspector.GetSplitGroupsFor(typeof(Inherited)).Should().Have.SameValuesAs("group1");
@@ -34,8 +34,8 @@
var memberFromDeclaringType = For<MyClass>.Property(x=> x.Something);
var memberFromReferencedType = typeof(Inherited).GetProperty("Something");
- inspector.AddAsPropertySplit(typeof(MyClass), "group", memberFromDeclaringType);
- inspector.AddAsPropertySplit(typeof(Inherited), "group1", memberFromReferencedType);
+ inspector.AddAsPropertySplit(new SplitDefinition(typeof(MyClass), "group", memberFromDeclaringType));
+ inspector.AddAsPropertySplit(new SplitDefinition(typeof(Inherited), "group1", memberFromReferencedType));
inspector.GetSplitGroupsFor(typeof(MyClass)).Should().Have.SameValuesAs("group");
inspector.GetSplitGroupsFor(typeof(Inherited)).Should().Be.Empty();
Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs 2011-04-10 16:38:24 UTC (rev 5650)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs 2011-04-10 17:55:04 UTC (rev 5651)
@@ -22,7 +22,7 @@
{
var destination = new ExplicitDeclarationsHolder();
var source = new ExplicitDeclarationsHolder();
- source.AddAsPropertySplit(typeof (MyClass), "foo", property);
+ source.AddAsPropertySplit(new SplitDefinition(typeof (MyClass), "foo", property));
destination.Merge(source);
destination.SplitDefinitions.Should().Have.Count.EqualTo(1);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|