|
From: <fab...@us...> - 2011-04-04 15:23:03
|
Revision: 5600
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5600&view=rev
Author: fabiomaulo
Date: 2011-04-04 15:22:56 +0000 (Mon, 04 Apr 2011)
Log Message:
-----------
Starting properties split management (<join>)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelInspector.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyContainerMapper.cs
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs
trunk/nhibernate/src/NHibernate/NHibernate.csproj
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinMapper.cs
trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/RootClassPropertiesSplitsTests.cs
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs 2011-04-03 19:15:17 UTC (rev 5599)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs 2011-04-04 15:22:56 UTC (rev 5600)
@@ -368,6 +368,11 @@
return IsMappedFor(tablePerClassEntities, type);
}
+ public bool IsTablePerClassSplit(System.Type type, object splitGroupId, MemberInfo member)
+ {
+ return false;
+ }
+
public bool IsTablePerClassHierarchy(System.Type type)
{
ExecuteDelayedTypeRegistration(type);
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs 2011-04-03 19:15:17 UTC (rev 5599)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs 2011-04-04 15:22:56 UTC (rev 5600)
@@ -44,5 +44,8 @@
void SchemaAction(SchemaAction action);
}
- public interface IClassMapper<TEntity> : IClassAttributesMapper<TEntity>, IPropertyContainerMapper<TEntity> where TEntity : class {}
+ public interface IClassMapper<TEntity> : IClassAttributesMapper<TEntity>, IPropertyContainerMapper<TEntity> where TEntity : class
+ {
+ void Join(Action<IJoinMapper<TEntity>> splittedMapping);
+ }
}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinMapper.cs
===================================================================
(Binary files differ)
Property changes on: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinMapper.cs
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelInspector.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelInspector.cs 2011-04-03 19:15:17 UTC (rev 5599)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelInspector.cs 2011-04-04 15:22:56 UTC (rev 5600)
@@ -9,6 +9,7 @@
bool IsEntity(System.Type type);
bool IsTablePerClass(System.Type type);
+ bool IsTablePerClassSplit(System.Type type, object splitGroupId, MemberInfo member);
bool IsTablePerClassHierarchy(System.Type type);
bool IsTablePerConcreteClass(System.Type type);
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyContainerMapper.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyContainerMapper.cs 2011-04-03 19:15:17 UTC (rev 5599)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyContainerMapper.cs 2011-04-04 15:22:56 UTC (rev 5600)
@@ -5,7 +5,7 @@
namespace NHibernate.Mapping.ByCode
{
- public interface IPropertyContainerMapper : IPlainPropertyContainerMapper
+ public interface ICollectionPropertiesContainerMapper
{
void Set(MemberInfo property, Action<ISetPropertiesMapper> collectionMapping,
Action<ICollectionElementRelation> mapping);
@@ -21,7 +21,9 @@
Action<ICollectionElementRelation> mapping);
}
- public interface IPropertyContainerMapper<TEntity> : IPlainPropertyContainerMapper<TEntity> where TEntity : class
+ public interface IPropertyContainerMapper : ICollectionPropertiesContainerMapper, IPlainPropertyContainerMapper {}
+
+ public interface ICollectionPropertiesContainerMapper<TEntity> where TEntity : class
{
void Set<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property,
Action<ISetPropertiesMapper<TEntity, TElement>> collectionMapping,
@@ -39,8 +41,11 @@
Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping,
Action<IMapKeyRelation<TKey>> keyMapping,
Action<ICollectionElementRelation<TElement>> mapping);
+
void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property,
- Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping,
- Action<ICollectionElementRelation<TElement>> mapping);
+ Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping,
+ Action<ICollectionElementRelation<TElement>> mapping);
}
+
+ public interface IPropertyContainerMapper<TEntity> : ICollectionPropertiesContainerMapper<TEntity>, IPlainPropertyContainerMapper<TEntity> where TEntity : class {}
}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs 2011-04-03 19:15:17 UTC (rev 5599)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs 2011-04-04 15:22:56 UTC (rev 5600)
@@ -109,6 +109,11 @@
CustomizersHolder.AddCustomizer(typeof (TEntity), (IClassAttributesMapper m) => m.SchemaAction(action));
}
+ public void Join(Action<IJoinMapper<TEntity>> splittedMapping)
+ {
+ throw new NotImplementedException();
+ }
+
public void EntityName(string value)
{
CustomizersHolder.AddCustomizer(typeof (TEntity), (IClassAttributesMapper m) => m.EntityName(value));
Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-04-03 19:15:17 UTC (rev 5599)
+++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-04-04 15:22:56 UTC (rev 5600)
@@ -309,6 +309,7 @@
<Compile Include="Mapping\ByCode\IGeneratorMapper.cs" />
<Compile Include="Mapping\ByCode\IIdMapper.cs" />
<Compile Include="Mapping\ByCode\IJoinedSubclassMapper.cs" />
+ <Compile Include="Mapping\ByCode\IJoinMapper.cs" />
<Compile Include="Mapping\ByCode\IKeyMapper.cs" />
<Compile Include="Mapping\ByCode\IListIndexMapper.cs" />
<Compile Include="Mapping\ByCode\IListPropertiesMapper.cs" />
Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/RootClassPropertiesSplitsTests.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/RootClassPropertiesSplitsTests.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/RootClassPropertiesSplitsTests.cs 2011-04-04 15:22:56 UTC (rev 5600)
@@ -0,0 +1,51 @@
+using NHibernate.Mapping.ByCode;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.MappingByCode.ExpliticMappingTests
+{
+ public class RootClassPropertiesSplitsTests
+ {
+ private class MyClass
+ {
+ public int Id { get; set; }
+ public string Something0 { get; set; }
+ public string SomethingA1 { get; set; }
+ public string SomethingA2 { get; set; }
+ public string SomethingB1 { get; set; }
+ public string SomethingB2 { get; set; }
+ }
+
+ [Test, Ignore("Not implemented yet")]
+ public void WhenSplittedPropertiesThenRegister()
+ {
+ var inspector = new ExplicitlyDeclaredModel();
+ var mapper = new ModelMapper(inspector);
+ mapper.Class<MyClass>(map =>
+ {
+ map.Id(x => x.Id, idmap => { });
+ map.Join(mj=>
+ {
+ mj.Table("MyClassSplit1");
+ mj.Property(x => x.SomethingA1);
+ mj.Property(x => x.SomethingA2);
+ });
+ map.Join(mj =>
+ {
+ mj.Table("MyClassSplit2");
+ mj.Property(x => x.SomethingB1);
+ mj.Property(x => x.SomethingB2);
+ });
+ map.Property(x => x.Something0);
+ });
+
+ inspector.IsTablePerClassSplit(typeof(MyClass), "MyClassSplit1", For<MyClass>.Property(x => x.Something0)).Should().Be.False();
+ inspector.IsTablePerClassSplit(typeof(MyClass), "MyClassSplit2", For<MyClass>.Property(x => x.Something0)).Should().Be.False();
+
+ inspector.IsTablePerClassSplit(typeof(MyClass), "MyClassSplit1", For<MyClass>.Property(x => x.SomethingA1)).Should().Be.True();
+ inspector.IsTablePerClassSplit(typeof(MyClass), "MyClassSplit1", For<MyClass>.Property(x => x.SomethingA2)).Should().Be.True();
+ inspector.IsTablePerClassSplit(typeof(MyClass), "MyClassSplit2", For<MyClass>.Property(x => x.SomethingB1)).Should().Be.True();
+ inspector.IsTablePerClassSplit(typeof(MyClass), "MyClassSplit2", For<MyClass>.Property(x => x.SomethingB2)).Should().Be.True();
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-03 19:15:17 UTC (rev 5599)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-04 15:22:56 UTC (rev 5600)
@@ -519,6 +519,7 @@
<Compile Include="MappingByCode\ExpliticMappingTests\MappingOfPrivateMembersOnRootEntity.cs" />
<Compile Include="MappingByCode\ExpliticMappingTests\NaturalIdTests.cs" />
<Compile Include="MappingByCode\ExpliticMappingTests\PoidTests.cs" />
+ <Compile Include="MappingByCode\ExpliticMappingTests\RootClassPropertiesSplitsTests.cs" />
<Compile Include="MappingByCode\ExpliticMappingTests\VersionTests.cs" />
<Compile Include="MappingByCode\For.cs" />
<Compile Include="MappingByCode\NatureDemo\Naturalness\Address.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|