From: <fab...@us...> - 2011-04-01 17:11:15
|
Revision: 5572 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5572&view=rev Author: fabiomaulo Date: 2011-04-01 17:11:05 +0000 (Fri, 01 Apr 2011) Log Message: ----------- Initial upload mapping by code Modified Paths: -------------- trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ trunk/nhibernate/src/NHibernate/Mapping/ByCode/CacheInclude.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/CacheUsage.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Cascade.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/CascadeExtensions.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/CollectionFetchMode.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/CollectionLazy.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/FetchMode.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/ForClass.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IAccessorPropertyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IAnyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IBagPropertiesMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICacheMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionElementRelation.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionPropertiesMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionSqlsMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IColumnMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IColumnsMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentElementMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentMapKeyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentParentMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IDiscriminatorMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IElementMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntityAttributesMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntityPropertyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntitySqlsMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IFilterMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IGenerator.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IGeneratorDef.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IGeneratorMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IIdMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinedSubclassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IKeyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IListIndexMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IListPropertiesMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IManyToManyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IManyToOneMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IMapKeyManyToManyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IMapKeyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IMapKeyRelation.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IMapPropertiesMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelExplicitDeclarationsHolder.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelInspector.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/INaturalIdMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IOneToManyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IOneToOneMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPlainPropertyContainerMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyContainerMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/ISetPropertiesMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/ISubclassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IUnionSubclassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IVersionMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/AbstractBasePropertyContainerMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/AbstractPropertyContainerMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/AccessorPropertyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/AnyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/BagMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CacheMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CascadeConverter.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ClassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CollectionElementRelation.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ColumnMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ComponentElementMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ComponentMapKeyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ComponentMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ComponentNestedElementMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ComponentParentMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersHolder.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/BagPropertiesCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/CollectionElementCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/CollectionElementRelationCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/CollectionKeyCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/CollectionPropertiesCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ComponentCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ComponentElementCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinedSubclassCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinedSubclassKeyCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ListPropertiesCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ManyToManyCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/MapKeyComponentCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/MapKeyCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/MapKeyManyToManyCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/MapKeyRelationCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/MapPropertiesCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/OneToManyCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/PropertyContainerCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/SetPropertiesCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/SubclassCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/UnionSubclassCustomizer.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/DefaultCandidatePersistentMembersProvider.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/DiscriminatorMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ElementMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/FilterMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/GeneratorMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/Generators.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ICandidatePersistentMembersProvider.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ICustomizersHolder.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/IdMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/JoinedSubclassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/KeyManyToOneMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/KeyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/KeyPropertyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ListIndexMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ListMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ManyToManyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/ManyToOneMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/MapKeyManyToManyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/MapKeyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/MapKeyRelation.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/MapMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/MapperEventsHandlersDefinitions.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/NaturalIdMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/NoMemberPropertyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/OneToManyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/OneToOneMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/PropertyMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/PropertyPath.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/PropertyPathExtensions.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/SetMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/SubclassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/TypeNameUtil.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/UnionSubclassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/VersionMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Lazy.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/ModelMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/NotFoundMode.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/SchemaAction.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/TypeExtensions.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/VersionGeneration.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/ trunk/nhibernate/src/NHibernate.Test/MappingByCode/BasicMappingOfSimpleClass.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/ColumnsNamingConvetions.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappingOfPrivateMembersOnRootEntity.cs Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/CacheInclude.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/CacheInclude.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/CacheInclude.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,36 @@ +using NHibernate.Cfg.MappingSchema; + +namespace NHibernate.Mapping.ByCode +{ + public abstract class CacheInclude + { + public static CacheInclude All = new AllCacheInclude(); + public static CacheInclude NonLazy = new NonLazyCacheInclude(); + + public abstract HbmCacheInclude ToHbm(); + + #region Nested type: AllCacheInclude + + public class AllCacheInclude : CacheInclude + { + public override HbmCacheInclude ToHbm() + { + return HbmCacheInclude.All; + } + } + + #endregion + + #region Nested type: NonLazyCacheInclude + + public class NonLazyCacheInclude : CacheInclude + { + public override HbmCacheInclude ToHbm() + { + return HbmCacheInclude.NonLazy; + } + } + + #endregion + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/CacheUsage.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/CacheUsage.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/CacheUsage.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,62 @@ +using NHibernate.Cfg.MappingSchema; + +namespace NHibernate.Mapping.ByCode +{ + public abstract class CacheUsage + { + public static CacheUsage ReadOnly = new ReadOnlyUsage(); + public static CacheUsage ReadWrite = new ReadWriteUsage(); + public static CacheUsage NonstrictReadWrite = new NonstrictReadWriteUsage(); + public static CacheUsage Transactional = new TransactionalUsage(); + + public abstract HbmCacheUsage ToHbm(); + + #region Nested type: NonstrictReadWriteUsage + + private class NonstrictReadWriteUsage : CacheUsage + { + public override HbmCacheUsage ToHbm() + { + return HbmCacheUsage.NonstrictReadWrite; + } + } + + #endregion + + #region Nested type: ReadOnlyUsage + + private class ReadOnlyUsage : CacheUsage + { + public override HbmCacheUsage ToHbm() + { + return HbmCacheUsage.ReadOnly; + } + } + + #endregion + + #region Nested type: ReadWriteUsage + + private class ReadWriteUsage : CacheUsage + { + public override HbmCacheUsage ToHbm() + { + return HbmCacheUsage.ReadWrite; + } + } + + #endregion + + #region Nested type: TransactionalUsage + + private class TransactionalUsage : CacheUsage + { + public override HbmCacheUsage ToHbm() + { + return HbmCacheUsage.Transactional; + } + } + + #endregion + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Cascade.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Cascade.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Cascade.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,27 @@ +using System; + +namespace NHibernate.Mapping.ByCode +{ + /// <summary> + /// Defines behavior of soft-cascade actions. + /// </summary> + /// <remarks> + /// To check the content or to include/exclude values, from cascade, is strongly recommanded the usage of extensions methods defined in <see cref="CascadeExtensions"/> + /// </remarks> + /// <seealso cref="CascadeExtensions.Has"/> + /// <seealso cref="CascadeExtensions.Include"/> + /// <seealso cref="CascadeExtensions.Exclude"/> + [Flags] + public enum Cascade + { + None = 0, + Persist = 2, + Refresh = 4, + Merge = 8, + Remove = 16, + Detach = 32, + ReAttach = 64, + DeleteOrphans = 128, + All = 256, + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/CascadeExtensions.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/CascadeExtensions.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/CascadeExtensions.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,40 @@ +namespace NHibernate.Mapping.ByCode +{ + public static class CascadeExtensions + { + private const Cascade AnyButOrphans = Cascade.Persist | Cascade.Refresh | Cascade.Merge | Cascade.Remove | Cascade.Detach | Cascade.ReAttach; + + public static bool Has(this Cascade source, Cascade value) + { + return (source & value) == value; + } + + public static Cascade Include(this Cascade source, Cascade value) + { + return Cleanup(source | value); + } + + private static Cascade Cleanup(Cascade cascade) + { + bool hasAll = cascade.Has(Cascade.All) || cascade.Has(AnyButOrphans); + if (hasAll && cascade.Has(Cascade.DeleteOrphans)) + { + return Cascade.All | Cascade.DeleteOrphans; + } + if (hasAll) + { + return Cascade.All; + } + return cascade; + } + + public static Cascade Exclude(this Cascade source, Cascade value) + { + if (source.Has(Cascade.All) && !value.Has(Cascade.All)) + { + return Cleanup(((source & ~Cascade.All) | AnyButOrphans) & ~value); + } + return Cleanup(source & ~value); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/CollectionFetchMode.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/CollectionFetchMode.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/CollectionFetchMode.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,49 @@ +using NHibernate.Cfg.MappingSchema; + +namespace NHibernate.Mapping.ByCode +{ + public abstract class CollectionFetchMode + { + public static CollectionFetchMode Select = new SelectFetchMode(); + public static CollectionFetchMode Join = new JoinFetchMode(); + public static CollectionFetchMode Subselect = new SubselectFetchMode(); + + public abstract HbmCollectionFetchMode ToHbm(); + + #region Nested type: JoinFetchMode + + private class JoinFetchMode : CollectionFetchMode + { + public override HbmCollectionFetchMode ToHbm() + { + return HbmCollectionFetchMode.Join; + } + } + + #endregion + + #region Nested type: SelectFetchMode + + private class SelectFetchMode : CollectionFetchMode + { + public override HbmCollectionFetchMode ToHbm() + { + return HbmCollectionFetchMode.Select; + } + } + + #endregion + + #region Nested type: SubselectFetchMode + + private class SubselectFetchMode : CollectionFetchMode + { + public override HbmCollectionFetchMode ToHbm() + { + return HbmCollectionFetchMode.Subselect; + } + } + + #endregion + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/CollectionLazy.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/CollectionLazy.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/CollectionLazy.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,9 @@ +namespace NHibernate.Mapping.ByCode +{ + public enum CollectionLazy + { + Lazy, + NoLazy, + Extra + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,383 @@ +using System.Collections.Generic; +using System.Reflection; + +namespace NHibernate.Mapping.ByCode +{ + public class ExplicitlyDeclaredModel : IModelInspector, IModelExplicitDeclarationsHolder + { + private readonly HashSet<MemberInfo> any = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> arrays = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> bags = new HashSet<MemberInfo>(); + private readonly HashSet<System.Type> components = new HashSet<System.Type>(); + private readonly HashSet<MemberInfo> dictionaries = new HashSet<MemberInfo>(); + 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> manyToOneRelations = 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>(); + private readonly HashSet<MemberInfo> persistentProperties = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> poids = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> properties = new HashSet<MemberInfo>(); + private readonly HashSet<System.Type> rootEntities = new HashSet<System.Type>(); + private readonly HashSet<MemberInfo> sets = new HashSet<MemberInfo>(); + private readonly HashSet<System.Type> tablePerClassEntities = new HashSet<System.Type>(); + private readonly HashSet<System.Type> tablePerClassHierarchyEntities = new HashSet<System.Type>(); + private readonly HashSet<System.Type> tablePerClassHierarchyJoinEntities = new HashSet<System.Type>(); + private readonly HashSet<System.Type> tablePerConcreteClassEntities = new HashSet<System.Type>(); + private readonly HashSet<MemberInfo> versionProperties = new HashSet<MemberInfo>(); + + #region IModelExplicitDeclarationsHolder Members + + public IEnumerable<System.Type> RootEntities + { + get { return rootEntities; } + } + + public IEnumerable<System.Type> Components + { + get { return components; } + } + + public IEnumerable<System.Type> TablePerClassEntities + { + get { return tablePerClassEntities; } + } + + public IEnumerable<System.Type> TablePerClassHierarchyEntities + { + get { return tablePerClassHierarchyEntities; } + } + + public IEnumerable<System.Type> TablePerClassHierarchyJoinEntities + { + get { return tablePerClassHierarchyJoinEntities; } + } + + public IEnumerable<System.Type> TablePerConcreteClassEntities + { + get { return tablePerConcreteClassEntities; } + } + + public IEnumerable<MemberInfo> OneToOneRelations + { + get { return oneToOneRelations; } + } + + public IEnumerable<MemberInfo> ManyToOneRelations + { + get { return manyToOneRelations; } + } + + public IEnumerable<MemberInfo> ManyToManyRelations + { + get { return manyToManyRelations; } + } + + public IEnumerable<MemberInfo> OneToManyRelations + { + get { return oneToManyRelations; } + } + + public IEnumerable<MemberInfo> Any + { + get { return any; } + } + + public IEnumerable<MemberInfo> Poids + { + get { return poids; } + } + + public IEnumerable<MemberInfo> VersionProperties + { + get { return versionProperties; } + } + + public IEnumerable<MemberInfo> NaturalIds + { + get { return naturalIds; } + } + + public IEnumerable<MemberInfo> Sets + { + get { return sets; } + } + + public IEnumerable<MemberInfo> Bags + { + get { return bags; } + } + + public IEnumerable<MemberInfo> IdBags + { + get { return idBags; } + } + + public IEnumerable<MemberInfo> Lists + { + get { return lists; } + } + + public IEnumerable<MemberInfo> Arrays + { + get { return arrays; } + } + + public IEnumerable<MemberInfo> Dictionaries + { + get { return dictionaries; } + } + + public IEnumerable<MemberInfo> Properties + { + get { return properties; } + } + + public void AddAsRootEntity(System.Type type) + { + rootEntities.Add(type); + } + + public void AddAsComponent(System.Type type) + { + components.Add(type); + } + + public void AddAsTablePerClassEntity(System.Type type) + { + tablePerClassEntities.Add(type); + } + + public void AddAsTablePerClassHierarchyEntity(System.Type type) + { + tablePerClassHierarchyEntities.Add(type); + } + + public void AddAsTablePerClassHierarchyJoinEntity(System.Type type) + { + tablePerClassHierarchyJoinEntities.Add(type); + } + + public void AddAsTablePerConcreteClassEntity(System.Type type) + { + tablePerConcreteClassEntities.Add(type); + } + + public void AddAsOneToOneRelation(MemberInfo member) + { + persistentProperties.Add(member); + oneToOneRelations.Add(member); + } + + public void AddAsManyToOneRelation(MemberInfo member) + { + persistentProperties.Add(member); + manyToOneRelations.Add(member); + } + + public void AddAsManyToManyRelation(MemberInfo member) + { + persistentProperties.Add(member); + manyToManyRelations.Add(member); + } + + public void AddAsOneToManyRelation(MemberInfo member) + { + persistentProperties.Add(member); + oneToManyRelations.Add(member); + } + + public void AddAsAny(MemberInfo member) + { + persistentProperties.Add(member); + any.Add(member); + } + + public void AddAsPoid(MemberInfo member) + { + persistentProperties.Add(member); + poids.Add(member); + } + + public void AddAsVersionProperty(MemberInfo member) + { + persistentProperties.Add(member); + versionProperties.Add(member); + } + + public void AddAsNaturalId(MemberInfo member) + { + persistentProperties.Add(member); + naturalIds.Add(member); + } + + public void AddAsSet(MemberInfo member) + { + persistentProperties.Add(member); + sets.Add(member); + } + + public void AddAsBag(MemberInfo member) + { + persistentProperties.Add(member); + bags.Add(member); + } + + public void AddAsIdBag(MemberInfo member) + { + persistentProperties.Add(member); + idBags.Add(member); + } + + public void AddAsList(MemberInfo member) + { + persistentProperties.Add(member); + lists.Add(member); + } + + public void AddAsArray(MemberInfo member) + { + persistentProperties.Add(member); + arrays.Add(member); + } + + public void AddAsMap(MemberInfo member) + { + persistentProperties.Add(member); + dictionaries.Add(member); + } + + public void AddAsProperty(MemberInfo member) + { + persistentProperties.Add(member); + properties.Add(member); + } + + #endregion + + #region Implementation of IModelInspector + + public bool IsRootEntity(System.Type type) + { + return rootEntities.Contains(type); + } + + public bool IsComponent(System.Type type) + { + return components.Contains(type); + } + + public bool IsEntity(System.Type type) + { + return rootEntities.Contains(type) || + tablePerClassEntities.Contains(type) || + tablePerClassHierarchyEntities.Contains(type) || + tablePerClassHierarchyJoinEntities.Contains(type) || + tablePerConcreteClassEntities.Contains(type); + } + + public bool IsTablePerClass(System.Type type) + { + return tablePerClassEntities.Contains(type); + } + + public bool IsTablePerClassHierarchy(System.Type type) + { + return tablePerClassHierarchyEntities.Contains(type); + } + + public bool IsTablePerClassHierarchyJoin(System.Type type) + { + return tablePerClassHierarchyJoinEntities.Contains(type); + } + + public bool IsTablePerConcreteClass(System.Type type) + { + return tablePerConcreteClassEntities.Contains(type); + } + + public bool IsOneToOne(MemberInfo member) + { + return oneToOneRelations.Contains(member); + } + + public bool IsManyToOne(MemberInfo member) + { + return manyToOneRelations.Contains(member); + } + + public bool IsManyToMany(MemberInfo member) + { + return manyToManyRelations.Contains(member); + } + + public bool IsOneToMany(MemberInfo member) + { + return oneToManyRelations.Contains(member); + } + + public bool IsHeterogeneousAssociation(MemberInfo member) + { + return any.Contains(member); + } + + public bool IsPersistentId(MemberInfo member) + { + return poids.Contains(member); + } + + public bool IsVersion(MemberInfo member) + { + return versionProperties.Contains(member); + } + + public bool IsMemberOfNaturalId(MemberInfo member) + { + return naturalIds.Contains(member); + } + + public bool IsPersistentProperty(MemberInfo member) + { + return persistentProperties.Contains(member); + } + + public bool IsSet(MemberInfo role) + { + return sets.Contains(role); + } + + public bool IsBag(MemberInfo role) + { + return bags.Contains(role); + } + + public bool IsIdBag(MemberInfo role) + { + return idBags.Contains(role); + } + + public bool IsList(MemberInfo role) + { + return lists.Contains(role); + } + + public bool IsArray(MemberInfo role) + { + return arrays.Contains(role); + } + + public bool IsDictionary(MemberInfo role) + { + return dictionaries.Contains(role); + } + + public bool IsProperty(MemberInfo member) + { + return properties.Contains(member); + } + + #endregion + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,182 @@ +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +namespace NHibernate.Mapping.ByCode +{ + public class FakeModelExplicitDeclarationsHolder : IModelExplicitDeclarationsHolder + { + private readonly IEnumerable<MemberInfo> any = Enumerable.Empty<MemberInfo>(); + private readonly IEnumerable<MemberInfo> arrays = Enumerable.Empty<MemberInfo>(); + private readonly IEnumerable<MemberInfo> bags = Enumerable.Empty<MemberInfo>(); + private readonly IEnumerable<System.Type> components = Enumerable.Empty<System.Type>(); + private readonly IEnumerable<MemberInfo> dictionaries = Enumerable.Empty<MemberInfo>(); + private readonly IEnumerable<MemberInfo> idBags = Enumerable.Empty<MemberInfo>(); + 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> naturalIds = Enumerable.Empty<MemberInfo>(); + 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> properties = Enumerable.Empty<MemberInfo>(); + private readonly IEnumerable<System.Type> rootEntities = Enumerable.Empty<System.Type>(); + private readonly IEnumerable<MemberInfo> sets = Enumerable.Empty<MemberInfo>(); + private readonly IEnumerable<System.Type> tablePerClassEntities = Enumerable.Empty<System.Type>(); + private readonly IEnumerable<System.Type> tablePerClassHierarchyEntities = Enumerable.Empty<System.Type>(); + private readonly IEnumerable<System.Type> tablePerClassHierarchyJoinEntities = Enumerable.Empty<System.Type>(); + private readonly IEnumerable<System.Type> tablePerConcreteClassEntities = Enumerable.Empty<System.Type>(); + private readonly IEnumerable<MemberInfo> versionProperties = Enumerable.Empty<MemberInfo>(); + + #region IModelExplicitDeclarationsHolder Members + + public IEnumerable<System.Type> RootEntities + { + get { return rootEntities; } + } + + public IEnumerable<System.Type> Components + { + get { return components; } + } + + public IEnumerable<System.Type> TablePerClassEntities + { + get { return tablePerClassEntities; } + } + + public IEnumerable<System.Type> TablePerClassHierarchyEntities + { + get { return tablePerClassHierarchyEntities; } + } + + public IEnumerable<System.Type> TablePerClassHierarchyJoinEntities + { + get { return tablePerClassHierarchyJoinEntities; } + } + + public IEnumerable<System.Type> TablePerConcreteClassEntities + { + get { return tablePerConcreteClassEntities; } + } + + public IEnumerable<MemberInfo> OneToOneRelations + { + get { return oneToOneRelations; } + } + + public IEnumerable<MemberInfo> ManyToOneRelations + { + get { return manyToOneRelations; } + } + + public IEnumerable<MemberInfo> ManyToManyRelations + { + get { return manyToManyRelations; } + } + + public IEnumerable<MemberInfo> OneToManyRelations + { + get { return oneToManyRelations; } + } + + public IEnumerable<MemberInfo> Any + { + get { return any; } + } + + public IEnumerable<MemberInfo> Poids + { + get { return poids; } + } + + public IEnumerable<MemberInfo> VersionProperties + { + get { return versionProperties; } + } + + public IEnumerable<MemberInfo> NaturalIds + { + get { return naturalIds; } + } + + public IEnumerable<MemberInfo> Sets + { + get { return sets; } + } + + public IEnumerable<MemberInfo> Bags + { + get { return bags; } + } + + public IEnumerable<MemberInfo> IdBags + { + get { return idBags; } + } + + public IEnumerable<MemberInfo> Lists + { + get { return lists; } + } + + public IEnumerable<MemberInfo> Arrays + { + get { return arrays; } + } + + public IEnumerable<MemberInfo> Dictionaries + { + get { return dictionaries; } + } + + public IEnumerable<MemberInfo> Properties + { + get { return properties; } + } + + public void AddAsRootEntity(System.Type type) {} + + public void AddAsComponent(System.Type type) {} + + public void AddAsTablePerClassEntity(System.Type type) {} + + public void AddAsTablePerClassHierarchyEntity(System.Type type) {} + + public void AddAsTablePerClassHierarchyJoinEntity(System.Type type) {} + + public void AddAsTablePerConcreteClassEntity(System.Type type) {} + + public void AddAsOneToOneRelation(MemberInfo member) {} + + public void AddAsManyToOneRelation(MemberInfo member) {} + + public void AddAsManyToManyRelation(MemberInfo member) {} + + public void AddAsOneToManyRelation(MemberInfo member) {} + + public void AddAsAny(MemberInfo member) {} + + public void AddAsPoid(MemberInfo member) {} + + public void AddAsVersionProperty(MemberInfo member) {} + + public void AddAsNaturalId(MemberInfo member) {} + + public void AddAsSet(MemberInfo member) {} + + public void AddAsBag(MemberInfo member) {} + + public void AddAsIdBag(MemberInfo member) {} + + public void AddAsList(MemberInfo member) {} + + public void AddAsArray(MemberInfo member) {} + + public void AddAsMap(MemberInfo member) {} + + public void AddAsProperty(MemberInfo member) {} + + #endregion + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/FetchMode.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/FetchMode.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/FetchMode.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,36 @@ +using NHibernate.Cfg.MappingSchema; + +namespace NHibernate.Mapping.ByCode +{ + public abstract class FetchMode + { + public static FetchMode Select = new SelectFetchMode(); + public static FetchMode Join = new JoinFetchMode(); + + public abstract HbmFetchMode ToHbm(); + + #region Nested type: JoinFetchMode + + private class JoinFetchMode : FetchMode + { + public override HbmFetchMode ToHbm() + { + return HbmFetchMode.Join; + } + } + + #endregion + + #region Nested type: SelectFetchMode + + private class SelectFetchMode : FetchMode + { + public override HbmFetchMode ToHbm() + { + return HbmFetchMode.Select; + } + } + + #endregion + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ForClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ForClass.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ForClass.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,30 @@ +using System.Reflection; + +namespace NHibernate.Mapping.ByCode +{ + public static class ForClass<T> + { + private const BindingFlags DefaultFlags = + BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly; + + public static FieldInfo Field(string fieldName) + { + if (fieldName == null) + { + return null; + } + + return GetField(typeof(T), fieldName); + } + + private static FieldInfo GetField(System.Type type, string fieldName) + { + if(type == typeof(object) || type == null) + { + return null; + } + FieldInfo member = type.GetField(fieldName, DefaultFlags) ?? GetField(type.BaseType, fieldName); + return member; + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IAccessorPropertyMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IAccessorPropertyMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IAccessorPropertyMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,17 @@ +namespace NHibernate.Mapping.ByCode +{ + public enum Accessor + { + Property, + Field, + NoSetter, + ReadOnly, + None + } + + public interface IAccessorPropertyMapper + { + void Access(Accessor accessor); + void Access(System.Type accessorType); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IAnyMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IAnyMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IAnyMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,32 @@ +using System; +using NHibernate.Type; + +namespace NHibernate.Mapping.ByCode +{ + public interface IAnyMapper : IEntityPropertyMapper + { + 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); + + + void Cascade(Cascade cascadeStyle); + void Index(string indexName); + void Lazy(bool isLazy); + void Update(bool consideredInUpdateQuery); + void Insert(bool consideredInInsertQuery); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IBagPropertiesMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IBagPropertiesMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IBagPropertiesMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,6 @@ +namespace NHibernate.Mapping.ByCode +{ + public interface IBagPropertiesMapper : ICollectionPropertiesMapper {} + + public interface IBagPropertiesMapper<TEntity, TElement> : ICollectionPropertiesMapper<TEntity, TElement> where TEntity : class {} +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICacheMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICacheMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICacheMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,15 @@ +namespace NHibernate.Mapping.ByCode +{ + public interface ICacheMapper + { + void Usage(CacheUsage cacheUsage); + void Region(string regionName); + + /// <summary> + /// + /// </summary> + /// <param name="cacheInclude"></param> + /// <remarks>Not supported in NH3.</remarks> + void Include(CacheInclude cacheInclude); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,47 @@ +using System; +using System.Linq.Expressions; +using System.Reflection; + +namespace NHibernate.Mapping.ByCode +{ + public interface IClassAttributesMapper : IEntityAttributesMapper, IEntitySqlsMapper + { + void Id(Action<IIdMapper> idMapper); + void Id(MemberInfo idProperty, Action<IIdMapper> idMapper); + void Discriminator(Action<IDiscriminatorMapper> discriminatorMapping); + void DiscriminatorValue(object value); + void Table(string tableName); + void Catalog(string catalogName); + void Schema(string schemaName); + void Mutable(bool isMutable); + void Version(MemberInfo versionProperty, Action<IVersionMapper> versionMapping); + void NaturalId(Action<INaturalIdMapper> naturalIdMapping); + void Cache(Action<ICacheMapper> cacheMapping); + void Filter(string filterName, Action<IFilterMapper> filterMapping); + void Where(string whereClause); + void SchemaAction(SchemaAction action); + } + + public interface IClassMapper : IClassAttributesMapper, IPropertyContainerMapper {} + + public interface IClassAttributesMapper<TEntity> : IEntityAttributesMapper, IEntitySqlsMapper where TEntity : class + { + void Id(Action<IIdMapper> idMapper); + void Id<TProperty>(Expression<Func<TEntity, TProperty>> idProperty, Action<IIdMapper> idMapper); + void Id(FieldInfo idProperty, Action<IIdMapper> idMapper); + void Discriminator(Action<IDiscriminatorMapper> discriminatorMapping); + void DiscriminatorValue(object value); + void Table(string tableName); + void Catalog(string catalogName); + void Schema(string schemaName); + void Mutable(bool isMutable); + void Version<TProperty>(Expression<Func<TEntity, TProperty>> versionProperty, Action<IVersionMapper> versionMapping); + void NaturalId(Action<INaturalIdAttributesMapper> naturalIdMapping); + void Cache(Action<ICacheMapper> cacheMapping); + void Filter(string filterName, Action<IFilterMapper> filterMapping); + void Where(string whereClause); + void SchemaAction(SchemaAction action); + } + + public interface IClassMapper<TEntity> : IClassAttributesMapper<TEntity>, IPropertyContainerMapper<TEntity> where TEntity : class {} +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionElementRelation.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionElementRelation.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionElementRelation.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,20 @@ +using System; + +namespace NHibernate.Mapping.ByCode +{ + public interface ICollectionElementRelation + { + void Element(Action<IElementMapper> mapping); + void OneToMany(Action<IOneToManyMapper> mapping); + void ManyToMany(Action<IManyToManyMapper> mapping); + void Component(Action<IComponentElementMapper> mapping); + } + + public interface ICollectionElementRelation<TElement> + { + void Element(Action<IElementMapper> mapping); + void OneToMany(Action<IOneToManyMapper> mapping); + void ManyToMany(Action<IManyToManyMapper> mapping); + void Component(Action<IComponentElementMapper<TElement>> mapping); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionPropertiesMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionPropertiesMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionPropertiesMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,54 @@ +using System; +using System.Linq.Expressions; +using System.Reflection; +using NHibernate.UserTypes; + +namespace NHibernate.Mapping.ByCode +{ + public interface ICollectionPropertiesMapper : IEntityPropertyMapper, ICollectionSqlsMapper + { + void Inverse(bool value); + void Mutable(bool value); + void Where(string sqlWhereClause); + void BatchSize(int value); + void Lazy(CollectionLazy collectionLazy); + void Key(Action<IKeyMapper> keyMapping); + void OrderBy(MemberInfo property); + void OrderBy(string sqlOrderByClause); + void Sort(); + void Sort<TComparer>(); + void Cascade(Cascade cascadeStyle); + //void Type(string namedCollectionType); // TODO: figure out a way to avoid string for embedded namedCollectionType + void Type<TCollection>() where TCollection : IUserCollectionType; + void Type(System.Type collectionType); + void Table(string tableName); + void Catalog(string catalogName); + void Schema(string schemaName); + void Cache(Action<ICacheMapper> cacheMapping); + void Filter(string filterName, Action<IFilterMapper> filterMapping); + void Fetch(CollectionFetchMode fetchMode); + } + + public interface ICollectionPropertiesMapper<TEntity, TElement> : IEntityPropertyMapper, ICollectionSqlsMapper where TEntity : class + { + void Inverse(bool value); + void Mutable(bool value); + void Where(string sqlWhereClause); + void BatchSize(int value); + void Lazy(CollectionLazy collectionLazy); + void Key(Action<IKeyMapper<TEntity>> keyMapping); + void OrderBy<TProperty>(Expression<Func<TElement, TProperty>> property); + void OrderBy(string sqlOrderByClause); + void Sort(); + void Sort<TComparer>(); + void Cascade(Cascade cascadeStyle); + void Type<TCollection>() where TCollection : IUserCollectionType; + void Type(System.Type collectionType); + void Table(string tableName); + void Catalog(string catalogName); + void Schema(string schemaName); + void Cache(Action<ICacheMapper> cacheMapping); + void Filter(string filterName, Action<IFilterMapper> filterMapping); + void Fetch(CollectionFetchMode fetchMode); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionSqlsMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionSqlsMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ICollectionSqlsMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,12 @@ +namespace NHibernate.Mapping.ByCode +{ + public interface ICollectionSqlsMapper + { + void Loader(string namedQueryReference); + void SqlInsert(string sql); + void SqlUpdate(string sql); + void SqlDelete(string sql); + void SqlDeleteAll(string sql); + void Subselect(string sql); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IColumnMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IColumnMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IColumnMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,17 @@ +namespace NHibernate.Mapping.ByCode +{ + public interface IColumnMapper + { + void Name(string name); + void Length(int length); + void Precision(short precision); + void Scale(short scale); + void NotNullable(bool notnull); + void Unique(bool unique); + void UniqueKey(string uniquekeyName); + void SqlType(string sqltype); + void Index(string indexName); + void Check(string checkConstraint); + void Default(object defaultValue); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IColumnsMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IColumnsMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IColumnsMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,11 @@ +using System; + +namespace NHibernate.Mapping.ByCode +{ + public interface IColumnsMapper + { + void Column(Action<IColumnMapper> columnMapper); + void Columns(params Action<IColumnMapper>[] columnMapper); + void Column(string name); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentElementMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentElementMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentElementMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,26 @@ +using System; +using System.Linq.Expressions; +using System.Reflection; + +namespace NHibernate.Mapping.ByCode +{ + public interface IComponentElementMapper : IComponentAttributesMapper + { + void Property(MemberInfo property, Action<IPropertyMapper> mapping); + + void Component(MemberInfo property, Action<IComponentElementMapper> mapping); + + void ManyToOne(MemberInfo property, Action<IManyToOneMapper> mapping); + } + + public interface IComponentElementMapper<TComponent> : IComponentAttributesMapper<TComponent> + { + void Property<TProperty>(Expression<Func<TComponent, TProperty>> property, Action<IPropertyMapper> mapping); + + void Component<TNestedComponent>(Expression<Func<TComponent, TNestedComponent>> property, + Action<IComponentElementMapper<TNestedComponent>> mapping) + where TNestedComponent : class; + + void ManyToOne<TProperty>(Expression<Func<TComponent, TProperty>> property, Action<IManyToOneMapper> mapping) where TProperty : class; + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentMapKeyMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentMapKeyMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentMapKeyMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,20 @@ +using System; +using System.Linq.Expressions; +using System.Reflection; + +namespace NHibernate.Mapping.ByCode +{ + public interface IComponentMapKeyMapper + { + void Property(MemberInfo property, Action<IPropertyMapper> mapping); + + void ManyToOne(MemberInfo property, Action<IManyToOneMapper> mapping); + } + + public interface IComponentMapKeyMapper<TComponent> + { + void Property<TProperty>(Expression<Func<TComponent, TProperty>> property, Action<IPropertyMapper> mapping); + + void ManyToOne<TProperty>(Expression<Func<TComponent, TProperty>> property, Action<IManyToOneMapper> mapping) where TProperty : class; + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,30 @@ +using System; +using System.Linq.Expressions; +using System.Reflection; + +namespace NHibernate.Mapping.ByCode +{ + public interface IComponentAttributesMapper : IEntityPropertyMapper + { + void Parent(MemberInfo parent); + void Parent(MemberInfo parent, Action<IComponentParentMapper> parentMapping); + void Update(bool consideredInUpdateQuery); + void Insert(bool consideredInInsertQuery); + void Lazy(bool isLazy); + void Class(System.Type componentType); + } + + public interface IComponentMapper : IComponentAttributesMapper, IPropertyContainerMapper {} + + public interface IComponentAttributesMapper<TComponent> : IEntityPropertyMapper + { + void Parent<TProperty>(Expression<Func<TComponent, TProperty>> parent) where TProperty : class; + void Parent<TProperty>(Expression<Func<TComponent, TProperty>> parent, Action<IComponentParentMapper> parentMapping) where TProperty : class; + void Update(bool consideredInUpdateQuery); + void Insert(bool consideredInInsertQuery); + void Lazy(bool isLazy); + void Class<TConcrete>() where TConcrete : TComponent; + } + + public interface IComponentMapper<TComponent> : IComponentAttributesMapper<TComponent>, IPropertyContainerMapper<TComponent> where TComponent : class {} +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentParentMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentParentMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IComponentParentMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,4 @@ +namespace NHibernate.Mapping.ByCode +{ + public interface IComponentParentMapper : IAccessorPropertyMapper {} +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IDiscriminatorMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IDiscriminatorMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IDiscriminatorMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,20 @@ +using System; +using NHibernate.Type; + +namespace NHibernate.Mapping.ByCode +{ + public interface IDiscriminatorMapper + { + void Column(string column); + void Column(Action<IColumnMapper> columnMapper); + void Type(IType persistentType); + void Type(IDiscriminatorType persistentType); + void Type<TPersistentType>() where TPersistentType : IDiscriminatorType; + void Type(System.Type persistentType); + void Formula(string formula); + void Force(bool force); + void Insert(bool applyOnApplyOnInsert); + void NotNullable(bool isNotNullable); + void Length(int length); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IElementMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IElementMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IElementMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,18 @@ +using NHibernate.Type; + +namespace NHibernate.Mapping.ByCode +{ + public interface IElementMapper : IColumnsMapper + { + void Type(IType persistentType); + void Type<TPersistentType>(); + void Type<TPersistentType>(object parameters); + void Type(System.Type persistentType, object parameters); + void Length(int length); + void Precision(short precision); + void Scale(short scale); + void NotNullable(bool notnull); + void Unique(bool unique); + void Formula(string formula); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntityAttributesMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntityAttributesMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntityAttributesMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,16 @@ +using NHibernate.Persister.Entity; + +namespace NHibernate.Mapping.ByCode +{ + public interface IEntityAttributesMapper + { + void EntityName(string value); + void Proxy(System.Type proxy); + void Lazy(bool value); + void DynamicUpdate(bool value); + void DynamicInsert(bool value); + void BatchSize(int value); + void SelectBeforeUpdate(bool value); + void Persister<T>() where T : IEntityPersister; + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntityPropertyMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntityPropertyMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntityPropertyMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,7 @@ +namespace NHibernate.Mapping.ByCode +{ + public interface IEntityPropertyMapper : IAccessorPropertyMapper + { + void OptimisticLock(bool takeInConsiderationForOptimisticLock); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntitySqlsMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntitySqlsMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IEntitySqlsMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,11 @@ +namespace NHibernate.Mapping.ByCode +{ + public interface IEntitySqlsMapper + { + void Loader(string namedQueryReference); + void SqlInsert(string sql); + void SqlUpdate(string sql); + void SqlDelete(string sql); + void Subselect(string sql); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IFilterMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IFilterMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IFilterMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,7 @@ +namespace NHibernate.Mapping.ByCode +{ + public interface IFilterMapper + { + void Condition(string sqlCondition); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IGenerator.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IGenerator.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IGenerator.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,4 @@ +namespace NHibernate.Mapping.ByCode +{ + public interface IGenerator {} +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IGeneratorDef.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IGeneratorDef.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IGeneratorDef.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,8 @@ +namespace NHibernate.Mapping.ByCode +{ + public interface IGeneratorDef + { + string Class { get; } + object Params { get; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IGeneratorMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IGeneratorMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IGeneratorMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,7 @@ +namespace NHibernate.Mapping.ByCode +{ + public interface IGeneratorMapper + { + void Params(object generatorParameters); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IIdMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IIdMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IIdMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,20 @@ +using System; +using NHibernate.Type; + +namespace NHibernate.Mapping.ByCode +{ + public interface IIdMapper : IAccessorPropertyMapper + { + void Generator(IGeneratorDef generator); + void Generator(IGeneratorDef generator, Action<IGeneratorMapper> generatorMapping); + + void Type(IIdentifierType persistentType); + //void Type<TPersistentType>() where TPersistentType : IIdentifierType; + //void Type<TPersistentType>(object parameters) where TPersistentType : IIdentifierType; + //void Type(System.System.Type persistentType, object parameters); + //void Column(Action<IColumnMapper> columnMapper); + //void Columns(params Action<IColumnMapper>[] columnMapper); + void Column(string name); + void Length(int length); + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinedSubclassMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinedSubclassMapper.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinedSubclassMapper.cs 2011-04-01 17:11:05 UTC (rev 5572) @@ -0,0 +1,25 @@ +using System; + +namespace NHibernate.Mapping.ByCode +{ + public interface IJoinedSubclassAttributesMapper : IEntityAttributesMapper, IEntitySqlsMapper + { + void Table(string tableName); + void Catalog(string catalogName); + void Schema(string schemaName); + void Key(Action<IKeyMapper> keyMapping); + void Extends(System.Type baseType); + } + + public int... [truncated message content] |