|
From: <fab...@us...> - 2011-04-20 19:28:36
|
Revision: 5725
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5725&view=rev
Author: fabiomaulo
Date: 2011-04-20 19:28:30 +0000 (Wed, 20 Apr 2011)
Log Message:
-----------
Starting DynamicComponentMapper
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/NHibernate.csproj
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/DynamicComponentMapper.cs
trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/DynamicComponentMapperTests/
trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/DynamicComponentMapperTests/DynCompAttributesSettingTest.cs
Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/DynamicComponentMapper.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/DynamicComponentMapper.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/DynamicComponentMapper.cs 2011-04-20 19:28:30 UTC (rev 5725)
@@ -0,0 +1,103 @@
+using System;
+using System.Reflection;
+using NHibernate.Cfg.MappingSchema;
+
+namespace NHibernate.Mapping.ByCode.Impl
+{
+ public class DynamicComponentMapper : IDynamicComponentMapper
+ {
+ private readonly HbmDynamicComponent component;
+ private readonly IAccessorPropertyMapper accessorPropertyMapper;
+
+ public DynamicComponentMapper(HbmDynamicComponent component, MemberInfo declaringTypeMember, HbmMapping mapDoc)
+ {
+ this.component = component;
+ accessorPropertyMapper = new AccessorPropertyMapper(declaringTypeMember.DeclaringType, declaringTypeMember.Name, x => component.access = x);
+ }
+
+ protected void AddProperty(object property)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void Access(Accessor accessor)
+ {
+ accessorPropertyMapper.Access(accessor);
+ }
+
+ public void Access(System.Type accessorType)
+ {
+ accessorPropertyMapper.Access(accessorType);
+ }
+
+ public void OptimisticLock(bool takeInConsiderationForOptimisticLock)
+ {
+ component.optimisticlock = takeInConsiderationForOptimisticLock;
+ }
+
+ public void Update(bool consideredInUpdateQuery)
+ {
+ component.update = consideredInUpdateQuery;
+ }
+
+ public void Insert(bool consideredInInsertQuery)
+ {
+ component.insert = consideredInInsertQuery;
+ }
+
+ public void Set(MemberInfo property, Action<ISetPropertiesMapper> collectionMapping, Action<ICollectionElementRelation> mapping)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void Bag(MemberInfo property, Action<IBagPropertiesMapper> collectionMapping, Action<ICollectionElementRelation> mapping)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void List(MemberInfo property, Action<IListPropertiesMapper> collectionMapping, Action<ICollectionElementRelation> mapping)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void Map(MemberInfo property, Action<IMapPropertiesMapper> collectionMapping, Action<IMapKeyRelation> keyMapping, Action<ICollectionElementRelation> mapping)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void IdBag(MemberInfo property, Action<IIdBagPropertiesMapper> collectionMapping, Action<ICollectionElementRelation> mapping)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void Property(MemberInfo property, Action<IPropertyMapper> mapping)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void Component(MemberInfo property, Action<IComponentMapper> mapping)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void Component(MemberInfo property, Action<IDynamicComponentMapper> mapping)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void ManyToOne(MemberInfo property, Action<IManyToOneMapper> mapping)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void Any(MemberInfo property, System.Type idTypeOfMetaType, Action<IAnyMapper> mapping)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void OneToOne(MemberInfo property, Action<IOneToOneMapper> mapping)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-04-20 16:17:26 UTC (rev 5724)
+++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-04-20 19:28:30 UTC (rev 5725)
@@ -295,6 +295,7 @@
<Compile Include="Mapping\ByCode\Conformist\SubclassMapping.cs" />
<Compile Include="Mapping\ByCode\Conformist\UnionSubclassMapping.cs" />
<Compile Include="Mapping\ByCode\IDynamicComponentAttributesMapper.cs" />
+ <Compile Include="Mapping\ByCode\Impl\DynamicComponentMapper.cs" />
<Compile Include="Mapping\ByCode\PropertyToField.cs" />
<Compile Include="Mapping\ByCode\SimpleModelInspector.cs" />
<Compile Include="Mapping\ByCode\ExplicitlyDeclaredModel.cs" />
Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/DynamicComponentMapperTests/DynCompAttributesSettingTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/DynamicComponentMapperTests/DynCompAttributesSettingTest.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/DynamicComponentMapperTests/DynCompAttributesSettingTest.cs 2011-04-20 19:28:30 UTC (rev 5725)
@@ -0,0 +1,66 @@
+using System.Collections;
+using NHibernate.Cfg.MappingSchema;
+using NHibernate.Mapping.ByCode;
+using NHibernate.Mapping.ByCode.Impl;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.MappingByCode.MappersTests.DynamicComponentMapperTests
+{
+ public class DynCompAttributesSettingTest
+ {
+ private class Person
+ {
+ public int Id { get; set; }
+ private IDictionary info;
+ public IDictionary Info
+ {
+ get { return info; }
+ }
+ }
+
+ [Test]
+ public void CanSetAccessor()
+ {
+ var mapdoc = new HbmMapping();
+ var component = new HbmDynamicComponent();
+ var mapper = new DynamicComponentMapper(component, For<Person>.Property(p => p.Info), mapdoc);
+
+ mapper.Access(Accessor.Field);
+ component.access.Should().Be("field.camelcase");
+ }
+
+ [Test]
+ public void CanSetUpdate()
+ {
+ var mapdoc = new HbmMapping();
+ var component = new HbmDynamicComponent();
+ var mapper = new DynamicComponentMapper(component, For<Person>.Property(p => p.Info), mapdoc);
+
+ mapper.Update(false);
+ component.update.Should().Be.False();
+ }
+
+ [Test]
+ public void CanSetInsert()
+ {
+ var mapdoc = new HbmMapping();
+ var component = new HbmDynamicComponent();
+ var mapper = new DynamicComponentMapper(component, For<Person>.Property(p => p.Info), mapdoc);
+
+ mapper.Insert(false);
+ component.insert.Should().Be.False();
+ }
+
+ [Test]
+ public void CanSetOptimisticLock()
+ {
+ var mapdoc = new HbmMapping();
+ var component = new HbmDynamicComponent();
+ var mapper = new DynamicComponentMapper(component, For<Person>.Property(p => p.Info), mapdoc);
+
+ mapper.OptimisticLock(false);
+ component.OptimisticLock.Should().Be.False();
+ }
+ }
+}
\ 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-20 16:17:26 UTC (rev 5724)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-20 19:28:30 UTC (rev 5725)
@@ -550,6 +550,7 @@
<Compile Include="MappingByCode\MappersTests\ClassMapperTests\SetPersisterTests.cs" />
<Compile Include="MappingByCode\MappersTests\ClassMapperTests\TablesSincronizationTests.cs" />
<Compile Include="MappingByCode\MappersTests\CollectionIdMapperTests.cs" />
+ <Compile Include="MappingByCode\MappersTests\DynamicComponentMapperTests\DynCompAttributesSettingTest.cs" />
<Compile Include="MappingByCode\MappersTests\FakeUserCollectionType.cs" />
<Compile Include="MappingByCode\MappersTests\IdBagMapperTest.cs" />
<Compile Include="MappingByCode\MappersTests\JoinedSubclassMapperTests\SetPersisterTests.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|