Author: gbayon
Date: Tue Mar 18 12:53:02 2008
New Revision: 638539
URL: http://svn.apache.org/viewvc?rev=638539&view=rev
Log:
Fix IBATISNET-260
Modified:
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Account.xml
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ConstructorTest.cs
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
Modified:
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Account.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Account.xml?rev=638539&r1=638538&r2=638539&view=diff
==============================================================================
---
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Account.xml
(original)
+++
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Account.xml
Tue Mar 18 12:53:02 2008
@@ -82,6 +82,20 @@
<result property="Guid" column="Category_Guid"
nullValue="00000000-0000-0000-0000-000000000000"/>
</resultMap>
+ <resultMap id="account-constructor" class="Account" >
+ <constructor>
+ <argument argumentName="identifiant"
column="Account_ID"/>
+ <argument argumentName="firstName"
column="Account_FirstName"/>
+ <argument argumentName="lastName"
column="Account_LastName"/>
+ </constructor>
+ </resultMap>
+
+ <resultMap id="account-extends-constructor" class="Account"
extends="account-constructor">
+ <result property="EmailAddress" column="Account_Email" nullValue="[EMAIL
PROTECTED]"/>
+ <result property="BannerOption" column="Account_Banner_Option"
dbType="Varchar" type="bool"/>
+ <result property="CartOption" column="Account_Cart_Option"
typeHandler="HundredsBool"/>
+ </resultMap>
+
<resultMap id="account-result-constructor" class="Account" >
<constructor>
<argument argumentName="identifiant"
column="Account_ID"/>
@@ -163,6 +177,13 @@
-->
<statements>
+ <select id="JIRA260" parameterClass="Integer"
+ resultMap="account-extends-constructor">
+ select *
+ from Accounts
+ where Account_ID = #value#
+ </select>
+
<select id="JIRA206"
resultMap="account-groupby">
SELECT
Modified:
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ConstructorTest.cs
URL:
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ConstructorTest.cs?rev=638539&r1=638538&r2=638539&view=diff
==============================================================================
---
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ConstructorTest.cs
(original)
+++
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ConstructorTest.cs
Tue Mar 18 12:53:02 2008
@@ -54,6 +54,17 @@
AssertAccount1(account);
}
+ [Test]
+ [Category("JIRA")]
+ [Category("JIRA-260")]
+ public void TestExtendsConstructor()
+ {
+ Account account = sqlMap.QueryForObject("JIRA260", 1) as Account;
+ AssertAccount1(account);
+ Assert.IsTrue(account.BannerOption );
+ Assert.IsFalse(account.CartOption);
+ }
+
#if dotnet2
/// <summary>
/// Test argument nullable constructor mapping
Modified:
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs
URL:
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs?rev=638539&r1=638538&r2=638539&view=diff
==============================================================================
---
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs
(original)
+++
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs
Tue Mar 18 12:53:02 2008
@@ -1869,8 +1869,21 @@
resultMap.GroupByPropertyNames.Add(superMap.GroupByPropertyNames[i]);
}
}
+ // Add constructor arguments
+ if (resultMap.Parameters.Count == 0)
+ {
+ for (int i = 0; i < superMap.Parameters.Count; i++)
+ {
+ resultMap.Parameters.Add(superMap.Parameters[i]);
+ }
+ if (resultMap.Parameters.Count>0)
+ {
+ resultMap.SetObjectFactory(_configScope);
+ }
+ }
- // Verify that that each groupBy element correspond to a
class member
+
+ // Verify that that each groupBy element
correspond to a class member
// of one of result property
for (int i = 0; i < resultMap.GroupByPropertyNames.Count;
i++)
{
Modified:
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
URL:
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs?rev=638539&r1=638538&r2=638539&view=diff
==============================================================================
---
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
(original)
+++
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
Tue Mar 18 12:53:02 2008
@@ -390,7 +390,22 @@
#endregion
}
- /// <summary>
+ /// <summary>
+ /// Sets the object factory.
+ /// </summary>
+ public void SetObjectFactory(ConfigurationScope configScope)
+ {
+ Type[] parametersType = new Type[_parameters.Count];
+ for (int i = 0; i < _parameters.Count; i++)
+ {
+ ArgumentProperty argumentMapping =
(ArgumentProperty)_parameters[i];
+ parametersType[i] = argumentMapping.MemberType;
+ }
+ // Init the object factory
+ _objectFactory =
configScope.SqlMapper.ObjectFactory.CreateFactory(_class, parametersType);
+ }
+
+ /// <summary>
/// Finds the constructor that takes the parameters.
/// </summary>
/// <param name="type">The <see cref="System.Type"/> to find
the constructor in.</param>